Screen
ne zaman bir SIGCHLD
sinyal alsa fifo / soketi kontrol eder . Soket eksikse, yeniden oluşturulur. Dolayısıyla çözüm süreci bulmak ve göndermek SIGCHLD
.
Debian sistemimde screen
setgid olarak kurulmuş utmp
fakat setuid olarak kurulmamış gibi görünüyor , bu yüzden aşağıdaki SSS'den ilk çözüm çalıştı:
$ kill -CHLD 30860
$ ls /var/run/screen/S-username/
30860.pts-4.localhost
Ekranın kurulu olduğu sistemlerde root
, bu işe yaramaz ve çekirdeği sizin için sinyal göndermeye zorlamak için etkin ekran oturumunun alt işlemlerinden birini öldürmeniz gerekir. Bu, geri kalanı tekrar bağlamak için ekran pencerelerinizden birini feda etmek anlamına gelir (akıllıca seçin!).
Bir itibaren arşivlenen Gentoo Wiki SSS :
Soket Eksik
Asıl işlem ve alt işlemlerin tümü hala çalışıyor olsa da, bazen çalışan bir ekranın soketi yok edilebilir. ekran-listesi "/ tmp / uscreens / .. 'te Soket bulunamadı" gösterecektir. http://www4.informatik.uni-erlangen.de/ ~ jnweiger / screen-faq.html # MISC
aşağı doğru yaklaşık 2 / 3'ü.
S: Bilinmeyen bir nedenden dolayı, / tmp / screens / S-myname içindeki ikilik gitti ve ekran oturumuma devam edemiyorum. Beşinci yeri yeniden yaratmanın bir yolu var mı?
C: Ekran, bir SIGCHLD sinyali aldığında beşi / soketi kontrol eder. Eğer eksikse, fifo / soket yeniden yaratılır.
Ekran ayarsız çalışıyorsa , kullanıcı kill -CHLD screenpid
doğrudan yayınlayabilir
( -CHILD
bazı sistemlerde). Screenpid, bir ps -x
listede bulunan ekran işleminin işlem kimliğidir .
Fakat genellikle bu işe yaramaz, çünkü ekran setuid root kurulmalıdır. Bu durumda bir sinyal gönderemezsiniz, ancak çekirdek gönderir. Öyle yapar, ne zaman bir ekran çocuğu durumunu değiştirirse. Ekran içinde çalışan "en az önemli" kabuğun işlem kimliğini (aşağıdaki shellpid) bulun. Deneme kill -STOP shellpid
. Eğer fifo / soket tekrar belirmezse, kabuk işlemini yok edin. Gerisini kurtarmak için bir kabuğunu feda edersin. Hiçbir şey işe yaramazsa, lütfen kayıp ekran oturumunda çalışan tüm işlemleri kaldırmayı unutmayın.