Co robi -HUP w połączeniu z killall?

16

Czasami, gdy uruchamiam killallpolecenie z terminala, współpracownik sugeruje lub edytuje moje skrypty, aby je wyświetlić killall -HUP.

Co robi ta -HUPczęść?

Danijel-James W.
źródło
Oto strona manuala Apple dla killall: developer.apple.com/library/mac/documentation/Darwin/Reference/... wygląda na to, że h = pomoc, u = użytkownik, a p = proces. Ale wszystkie są małe. Nie widzę parametrów wielkich liter na stronie podręcznika, ale wielkie litery mogą mieć zupełnie inne znaczenie - lub mogą nie istnieć ..
David DelMonte 28.09.2013

Odpowiedzi:

22

-HUPOpcja jest sygnałem, który jest wysyłany do procesów przez killallkomendę. Może być trochę trudno powiedzieć, ale odpowiedni wpis w killallinstrukcji to:

-SIGNAL     Send a different signal instead of the default TERM.  The signal may be specified
            either as a name (with or without a leading SIG), or numerically.

Różnica między domyślnym TERMsygnałem, który killallwysyła, a HUPsygnałem zależy w dużej mierze od programu, do którego wysyłasz sygnał. Po zakończeniu programu otrzymują inną wartość sygnału przerwania. Tak więc program może wychwycić przerwania i na podstawie wartości zdecydować, czy powinien zrobić jedną czy drugą rzecz.

TERMSygnału (historycznie „sygnał zakończenia”) jest zazwyczaj wysyłane do programu do żądania jej zakończenia (co jest to wersja politer od zmuszania jej wypowiedzenie z KILLsygnałem). Program może przechwycić i zignorować TERMsygnał. Nie musi się kończyć, jeśli nie chce i może całkowicie zignorować ten sygnał.

HUPSygnału (historycznie „sygnał rozłączenia”) jest zazwyczaj wysyłane do programu do wniosku, że uruchamia się ponownie i ponownie odczytuje całą swoją konfigurację w procesie. Rzeczywiste zachowanie programu zależy od implementacji specyficznej dla programu. Nie wszystkie programy łapią HUPi nie są wymagane przez konwencję lub dogmaty. Na przykład serwer WWW Apache przechwyci HUPsygnał i ponownie odczyta wszystkie swoje pliki konfiguracyjne, ale nie uruchomi ponownie żadnych procesów.

Jeśli chcesz naprawdę zakończyć procesy i nie martwić się, czy zamierzają złapać i być posłuszni sygnał używa KILLsygnału. Nie można go złapać ani zignorować, co powoduje zakończenie procesu.

Dobry przegląd dostępnych sygnałów POSIX znajduje się w tym artykule w Wikipedii .

Ian C.
źródło
2
Na dole strony podręcznika dla killall, w sekcji ZOBACZ TAKŻE, znajduje się link do strony zabicia, która zawiera listę sygnałów i ich działań.
Ian C.
Jestem jedną z tych #FAILosób, które nigdy nie czytają obok przełączników. Dziękuję Ci!
Danijel-James W
Jako „sygnał rozłączenia” HUP jest zwykle wysyłany do programu, gdy użytkownik wylogowuje się lub kończy powłokę, która uruchomiła program. Jeśli przechwytywanie sygnału nie jest realizowane przez program, program zwykle kończy działanie. Jak zauważono powyżej, program odbierający sygnał może realizować dowolną pożądaną aktywność w wyniku przechwycenia sygnału, jak wskazano w przykładzie Apache.
nachbar
2

Jest -HUPto sygnał „rozłączania się”, który może spowodować zatrzymanie aplikacji, odczytanie jej pliku konfiguracyjnego i ponowne uruchomienie. To niekoniecznie jest lepsze niż używanie go bez.

killall Finder

i

killall -HUP Finder

Z szacunkiem są takie same. W OS X Finder uruchomi się ponownie, ale ponownie odczyta swój plik konfiguracyjny. Może tak nie być, jeśli uruchomiona aplikacja nie ma -HUPwbudowanej funkcji. Jak wspomniano w poprzednim plakacie Apache. Czyta to pliki konfiguracyjne, ale nie może się ponownie uruchomić.

Tech29
źródło