linux命令(8)kill命令

2021-09-08 03:56:16 字數 3544 閱讀 7630

kill命令:

linux中的kill命令用來終止指定的程序(terminate a process)的執行,是linux下程序管理的常用命令。通常,終止乙個前台程序可以使用ctrl+c鍵,但是,對於乙個後台程序就須用kill命令來終止,我們就需要先使用ps/pidof/pstree/top等工具獲取程序pid,然後使用kill命令來殺掉該程序。kill命令是通過向程序傳送指定的訊號來結束相應程序的。在預設情況下,採用編號為15的term訊號。term訊號將終止所有不能捕獲該訊號的程序。對於那些可以捕獲該訊號的程序就要用編號為9的kill訊號,強行「殺掉」該程序。 

1.命令格式:

2.命令功能:

傳送指定的訊號到相應程序。不指定型號將傳送sigterm(15)終止指定程序。如果任無法終止該程式可用「-kill」 引數,其傳送的訊號為sigkill(9) ,將強制結束程序,使用ps命令或者jobs 命令可以檢視程序號。root使用者將影響使用者的程序,非root使用者只能影響自己的程序。

3.命令引數:

注意:1、kill命令可以帶訊號號碼選項,也可以不帶。如果沒有訊號號碼,kill命令就會發出終止訊號(15),這個訊號可以被程序捕獲,使得程序在退出之前可以清理並釋放資源。也可以用kill向程序傳送特定的訊號。例如:

2、kill可以帶有程序id號作為引數。當用kill向這些程序傳送訊號時,必須是這些程序的主人。如果試圖撤銷乙個沒有許可權撤銷的程序或撤銷乙個不存在的程序,就會得到乙個錯誤資訊。

3、可以向多個程序發訊號或終止它們。

4、當kill成功地傳送了訊號後,shell會在螢幕上顯示出程序的終止資訊。有時這個資訊不會馬上顯示,只有當按下enter鍵使shell的命令提示符再次出現時,才會顯示出來。

5、應注意,訊號使程序強行終止,這常會帶來一些***,如資料丟失或者終端無法恢復到正常狀態。傳送訊號時必須小心,只有在萬不得已時,才用kill訊號(9),因為程序不能首先捕獲它。要撤銷所有的後台作業,可以輸入kill 0。因為有些在後台執行的命令會啟動多個程序,跟蹤並找到所有要殺掉的程序的pid是件很麻煩的事。這時,使用kill 0來終止所有由當前shell啟動的程序,是個有效的方法。

4.使用例項:

例項1:列出所有訊號名稱

命令:kill -l

輸出: 1) sighup       2) sigint       3) sigquit      4) sigill

5) sigtrap      6) sigabrt      7) sigbus       8) sigfpe

9) sigkill     10) sigusr1     11) sigse**     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) si**talrm   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

說明:hup    1    終端斷線

int     2    中斷(同 ctrl + c)

quit    3    退出(同 ctrl + \)

term   15    終止

kill    9    強制終止

cont   18    繼續(與stop相反, fg/bg命令)

stop    19    暫停(同 ctrl + z)

例項2:得到指定訊號的數值

命令:輸出:

說明:例項3:先用ps查詢程序,然後用kill殺掉

命令:kill 3268

輸出: root      3268  2884  0 16:21 pts/1    00:00:00 vim install.log

root      3370  2822  0 16:21 pts/0    00:00:00 grep vim

-bash: kill: (3268) - 沒有那個程序

說明:例項4:徹底殺死程序

命令:kill –9 3268 

輸出: root      3268  2884  0 16:21 pts/1    00:00:00 vim install.log

root      3370  2822  0 16:21 pts/0    00:00:00 grep vim

-bash: kill: (3268) - 沒有那個程序

說明:例項5:殺死指定使用者所有程序

命令: 輸出:

說明:方法一,過濾出hnlinux使用者程序並殺死

例項6:init程序是不可殺的

命令:kill -9 1

輸出: root         1     0  0 nov02 ?        00:00:00 init [3]                  

root         1     0  0 nov02 ?        00:00:00 init [3]                  

root     17565 17534  0 17:38 pts/1    00:00:00 grep init

root         1     0  0 nov02 ?        00:00:00 init [3]                  

root     17567 17534  0 17:38 pts/1    00:00:00 grep init

說明:init是linux系統操作中不可缺少的程式之一。所謂的init程序,它是乙個由核心啟動的使用者級程序。核心自行啟動(已經被載入記憶體,開始執行,並已初始化所有的裝置驅動程式和資料結構等)之後,就通過啟動乙個使用者級程式init的方式,完成引導程序。所以,init始終是第乙個程序(其程序編號始終為1)。 其它所有程序都是init程序的子孫。init程序是不可殺的!

Linux 命令(76) kill 命令

kill 命令用於終止程序或向程序傳送指定訊號。kill 命令可以傳送指定的訊號到相應的程序或程序組。不指定訊號預設傳送 sigterm 15 來終止指定程序。如果想強制終止程序,可以顯示指定 sigkill 9 訊號,因為該訊號無法被程序捕獲。本文介紹的是符合 posix 標準的 kill 功能,...

linux下kill命令詳解

當需要中斷乙個前台程序的時候,通常是使用 ctrl c 組合鍵 但是對於乙個後台程序恐怕就不是乙個組合鍵所能解決的了,這時就必須求助於kill命令。該命令可以終止後台程序。至於終止後台程序的原因很多,或許是該程序占用的cpu時間過多 或許是該程序已經掛死。總之這種情況是經常發生的。kill命令是通過...

精通Linux的「kill」命令

參考 無論你使用哪種作業系統,你一定會遇到某個行為失常的應用,它把自己鎖死並拒絕關閉。在linux 還有mac 你可以用乙個 kill 命令強制終結它。在這個教程中,我們將展示給你多種方式使用 kill 命令終結應用。當你執行乙個 kill 命令,你實際上傳送了乙個訊號給系統,讓它去終結不正常的應用...