Kill -HUP alındığında program davranışı?


32

Öldürme sinyali HUP aldığında programın ne yapacağını öğrenmenin bir yolu var mı?
Sadece ofc komutunu çalıştırmadan: D

Örneğin,
killall -HUP pppdpppd yeniden başlatılacak
killall -HUP firefoxsadece firefox'u öldürecek

Yanıtlar:


47

Belgelerini oku. Tek yol bu. As Keith zaten yazdım , asıl anlamı SIGHUP kullanıcı programına kayıp erişimi vardı ve bu yüzden interaktif programlar ölmeli. Daemons - doğrudan kullanıcıyla etkileşime girmeyen programlar - bu davranışa ihtiyaç duymazlar ve yerine SIGHUP aldıklarında yapılandırma dosyalarını yeniden yüklerler. Ancak bunlar sadece sözleşmelerdir.

Kaynağa sahipseniz, onu da okuyabilirsiniz. Ya da sadece ikili dosyaya sahipseniz, onu sökmeyi deneyebilir, sigactionbir sinyal işleyicisi ayarlayan aramaları arayabilir SIGHUPve bu sinyal işleyicilerin ne yaptığını anlamaya çalışabilirsiniz. SIGHUP'ı bu programa ilk başta göndermemeyi ayarlamak daha kolay olacaktır.

Zamanın herhangi bir noktasında, verilen bir işlem, belirli bir sinyale ilişkin olarak üç durumdan birindedir: bunu gözardı etmek, varsayılan eylemi gerçekleştirmek veya özel bir işleyici çalıştırmak. Pek çok birim ps, örneğin ps sLinux'ta olan bir işlemin sinyal maskesini görmenizi sağlar . Bu, işlemin sinyali görmezden gelip gelmediğini veya SIGHUP'ta anında öleceğini söyleyebilir, ancak işlem bir işleyici ayarladıysa işleyicinin ne yaptığını söyleyemezsiniz.


1
SIGHUP, çevirmeli modemlerin günlerine geri döner. Modem bağlantısının kapatıldığını gösterir. Hala
kesik bir

@bill True, ancak bir SSH oturumu da SIGHUP, istemci bağlantısını kaybederse alt süreci oluşturacak.
Keith

@Keith: Bu yüzden bağlantının kopmuş bağlantılara uygulanacağını ve nadiren de olsa takılmaların neden olduğunu belirttim. Bu noktada ismini, SIGDCN gibi bağlantı kesmelerle ilgili bir şeyle değiştirmek kafa karıştırıcı olacaktır.
BillThor

18

Varsayılan eylem, SIGHUP'taki işlemi sonlandırmaktır. Daha man 7 signalfazla ayrıntı için bakınız. Ancak programlar onu tuzağa düşürüp istediklerini yapabilir. Daemon işlemlerinin asla bitmemesi gerektiğinden, genellikle kendilerini yeniden başlatmak (pppd gibi) gibi başka amaçlar için SIGHUP'ı kullanırlar. Firefox varsayılan işlemi korur.

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.