Zarządzanie procesami przez sygnały

W systemie może być uruchomionych setki tysięcy procesów w jednym czasie. Czasem zachodzi potrzeba powiadomienia procesu o jakimś zdarzeniu. Robi się to przez wysłanie sygnału kontrolnego do procesu. Procesy mogą także wykorzystywać sygnały aby ostrzegać siebie nawzajem o jakiś zdarzeniach. Proces po otrzymaniu sygnału zatrzymuje swoje wykonywanie i wykonuje instrukcję określoną przez sygnał. Taką instrukcją może być zamknięcie procesu, zabicie go lub zmuszenie go do ponownego przeczytania pliku konfiguracyjnego.

Lista wszystkich sygnałów systemowych:

Opis najczęściej używanych sygnałów:

Numer Nazwa Akcja
1 SIGHUP Sygnał zawieszający (hung up). Zmusza proces do samoistnego rozłączenia się z wyłączonego terminala, z którym był powiązany. Także instruuje demona aby ponownie przeczytał plik konfiguracyjny.
2 SIGINT  Sygnał ^c (ctrl+c) wywoływany przez kontrolujący terminal do zaprzestania wykonywania procesu.
 9 SIGKILL  Zabija proces nagle.
15 SIGTERM  Wysyła miękki sygnał terminacji do zatrzymania procesu. Sygnał może być zignorowany przez proces. Sygnał domyślny.

Komendy służące do przekazywania sygnałów procesowi to kill i pkill, najczęściej używane do przerwania wykonywania procesów. Użycie tych komend bez określania nazwy sygnału lub numeru sygnału wysyła sygnał domyślny tj. sygnał numer 15.  Zwykli użytkownicy mogą zabijać procesy, które są ich własnością, root może zabijać wszystkie procesy uruchomione w systemie.

Przykłady:

Polecenie pidof odnajduje PID procesu.

Niektóre procesy ignorują sygnał 15 wtedy trzeba ja zmusić do przerwania wykonywania sygnałem 9:

Wszystkie procesy, które spełniają określony warunek można zmusić do przerwania wykonywania komendą:

Leave a Reply

Your email address will not be published. Required fields are marked *