1.命令格式
kill [參數] 進程號
2.命令功能
發送指定的信號到相應進程,如果不指定信號則發送SIGTERM(15)終止指定進程,如果無法終止該進程,可以向進程號發送SKILL(9)信號,該信號將強制結束進程,
3.命令參數
| 選項 | 含義 |
|---|---|
| -l | 參數為信號名稱,顯示該信號的數字。如果不加信號參數,顯示全部信號名稱 |
| -p | 指定kill 命令只打印相關進程的進程號,而不發送任何信號 |
| -s | 指定發送信號 |
| -signal_name | 指定進程發送信號名稱 |
| -signal_number | 指定進程發送信號數字 |
說明:
- kill命令可以帶信號選項,也可以不帶信號。如果沒有信號號碼,kill命令就會發出終止信號(15),該信號可以被進程捕獲,使進程在退出之前可以清理並釋放資源。也可以向進程發送發送指定信號,如: kill -9 12356 向進程號12356發送SIGKILL信號
- 可以向多個進程發信號或終止它們
- 當kill成功地發送了信號后,shell會在屏幕上顯示出進程的終止信息
- 應注意,信號使進程強行終止,這常會帶來一些副作用,如數據丟失或者終端無法恢復到正常狀態。發送信號時必須小心,只有在萬不得已時,才用kill信號(9),因為進程不能首先捕獲它。要撤銷所有的后台作業,可以輸入kill 0。因為有些在后台運行的命令會啟動多個進程,跟蹤並找到所有要殺掉的進程的PID是件很麻煩的事。這時,使用kill 0來終止所有由當前shell啟動的進程,是個有效的方法
4.使用方法
例子1:列出所有的信號名稱
命令 kill -l
輸出:
root@hylaz:~# 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
常見的信號:
1 HUP (hang up) 終端短線
2 INT (interrupt) 中斷 (Ctrl+C)
3 QUIT (quit) 退出 (Ctrl+\)
6 ABRT (abort)
9 KILL (non-catchable, non-ignorable kill) 強制退出
14 ALRM (alarm clock)
15 TERM (software termination signal) 終止
19 STOP 暫停 (Ctrl+Z)
