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:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 |
# kill -l 1) SIGHUP 2) SIGINT 3) SIGQUIT 4) SIGILL 5) SIGTRAP 6) SIGABRT 7) SIGBUS 8) SIGFPE 9) SIGKILL 10) SIGUSR1 11) SIGSEGV 12) SIGUSR2 13) SIGPIPE 14) SIGALRM 15) SIGTERM 16) SIGSTKFLT 17) SIGCHLD 18) SIGCONT 19) SIGSTOP 20) SIGTSTP 21) SIGTTIN 22) SIGTTOU 23) SIGURG 24) SIGXCPU 25) SIGXFSZ 26) SIGVTALRM 27) SIGPROF 28) SIGWINCH 29) SIGIO 30) SIGPWR 31) SIGSYS 34) SIGRTMIN 35) SIGRTMIN+1 36) SIGRTMIN+2 37) SIGRTMIN+3 38) SIGRTMIN+4 39) SIGRTMIN+5 40) SIGRTMIN+6 41) SIGRTMIN+7 42) SIGRTMIN+8 43) SIGRTMIN+9 44) SIGRTMIN+10 45) SIGRTMIN+11 46) SIGRTMIN+12 47) SIGRTMIN+13 48) SIGRTMIN+14 49) SIGRTMIN+15 50) SIGRTMAX-14 51) SIGRTMAX-13 52) SIGRTMAX-12 53) SIGRTMAX-11 54) SIGRTMAX-10 55) SIGRTMAX-9 56) SIGRTMAX-8 57) SIGRTMAX-7 58) SIGRTMAX-6 59) SIGRTMAX-5 60) SIGRTMAX-4 61) SIGRTMAX-3 62) SIGRTMAX-2 63) SIGRTMAX-1 64) SIGRTMAX |
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.
1 |
# kill PID_procesu</code> <code># pkill nazwa_procesu |
Przykłady:
1 |
# pkill crond</code> <code># kill `pidof crond` |
Polecenie pidof odnajduje PID procesu.
Niektóre procesy ignorują sygnał 15 wtedy trzeba ja zmusić do przerwania wykonywania sygnałem 9:
1 |
# pkill –9 crond</code> <code># kill –9 `pgrep crond` |
Wszystkie procesy, które spełniają określony warunek można zmusić do przerwania wykonywania komendą:
1 |
# killall nazwa_procesu |