Zachowanie programu po otrzymaniu kill -HUP?


32

Czy istnieje sposób, aby dowiedzieć się, co zrobi program po otrzymaniu sygnału zabicia HUP?
Bez prostego uruchamiania polecenia c: D

Na przykład
killall -HUP pppdzrestartuje pppd
killall -HUP firefoxpo prostu zabije Firefoxa

Odpowiedzi:


47

Przeczytaj dokumentację. To jedyny sposób. Jak już napisał Keith , pierwotne znaczenie SIGHUP było takie, że użytkownik stracił dostęp do programu, dlatego programy interaktywne powinny umrzeć. Demony - programy, które nie komunikują się bezpośrednio z użytkownikiem - nie potrzebują tego zachowania i zamiast tego często ponownie ładują swoje pliki konfiguracyjne po otrzymaniu SIGHUP. Ale to tylko konwencje.

Jeśli masz źródło, możesz je również przeczytać. Lub jeśli masz tylko plik binarny, możesz spróbować go zdemontować, poszukać sigactionwywołań, które konfigurują procedurę obsługi sygnału SIGHUPi spróbować dowiedzieć się, co robią te procedury obsługi sygnału. Łatwiej będzie przede wszystkim nie wysyłać SIGHUP do tego programu.

W dowolnym momencie dany proces znajduje się w jednym z trzech stanów w odniesieniu do określonego sygnału: zignorowanie go, wykonanie domyślnej akcji lub uruchomienie niestandardowej procedury obsługi. Wiele jednorożców pozwala zobaczyć maskę sygnału procesu ps, np ps s. W systemie Linux. To może ci powiedzieć, czy proces ignoruje sygnał lub zginie natychmiast po SIGHUP, ale jeśli proces ustawił moduł obsługi, nie możesz powiedzieć, co robi moduł obsługi.


1
SIGHUP wraca do czasów modemów telefonicznych. Sygnalizował rozłączenie połączenia modemowego. Nadal ma zastosowanie do porzuconych połączeń, ale obecnie rzadko jest to rozłączanie się, które powoduje
zrywanie

@bill Prawda, ale sesja SSH ZATRZYMUJE również proces potomny, jeśli utraci połączenie z klientem.
Keith

@Keith: Dlatego wskazałem, że dotyczy to porzuconych połączeń i rzadko jest już powodowane przez zawieszanie się. W tym momencie byłoby mylące zmienić nazwę na coś związanego z rozłączeniami, na przykład SIGDCN.
BillThor

18

Domyślnym działaniem jest zakończenie procesu przy SIGHUP. Zobacz man 7 signalpo więcej szczegółów. Ale programy mogą go uwięzić i robić, co chcą. Ponieważ procesy demonów nigdy nie powinny się kończyć, zwykle używają SIGHUP do innych celów, takich jak ponowne inicjowanie się (jak robi to pppd). Firefox zachowuje akcję domyślną.

Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.