每天乙個linux命令 kill命令

2021-06-23 09:15:58 字數 4689 閱讀 4485

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

1.命令格式:

kill[引數][程序號]

2.命令功能:

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

3.命令引數:

-l 訊號,若果不加訊號的編號引數,則使用「-l」引數會列出全部的訊號名稱

-a 當處理當前程序時,不限制命令名和程序號的對應關係

-p 指定kill 命令只列印相關程序的程序號,而不傳送任何訊號

-s 指定傳送訊號

-u 指定使用者

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

kill -2 123

它的效果等同於在前台執行pid為123的程序時按下ctrl+c鍵。但是,普通使用者只能使用不帶signal引數的kill命令或最多使用-9訊號。

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

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

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

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

4.使用例項:

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

命令:kill -l

輸出:[root@localhost test6]#

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

說明:hup 1 終端斷線

int 2 中斷(同 ctrl + c)

quit 3 退出(同 ctrl + \)

term 15 終止

kill 9 強制終止

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

stop 19 暫停(同 ctrl + z)

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

命令:輸出:

[root@localhost test6]#

kill -l kill

9[root@localhost test6]#

kill -l sigkill

9[root@localhost test6]#

kill -l term

15[root@localhost test6]#

kill -l sigterm

15[root@localhost test6]#

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

命令:kill 3268

輸出:[root@localhost test6]#

ps -ef|grep vim

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

[root@localhost test6]#

kill 3268

[root@localhost test6]#

kill 3268

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

[root@localhost test6]#

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

命令:kill –9 3268

輸出:[root@localhost test6]#

ps -ef|grep vim

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

[root@localhost test6]#

kill –9 3268

[root@localhost test6]#

kill 3268

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

[root@localhost test6]#

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

命令:kill -9 $(ps -ef | grep peidalinux)

kill -u peidalinux

輸出:[root@localhost ~]#

kill -9 $(ps -ef | grep peidalinux)

[root@localhost ~]#

kill -u peidalinux

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

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

命令:kill -9 1

輸出:[root@localhost ~]#

ps -ef|grep init

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

root 17563 17534 0 17:37 pts/1 00:00:00 grep init

[root@localhost ~]#

kill -9 1

[root@localhost ~]#

kill -hup 1

[root@localhost ~]#

ps -ef|grep init

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

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

[root@localhost ~]#

kill -kill 1

[root@localhost ~]#

ps -ef|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

[root@localhost ~]#

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

每天乙個Linux命令 39 kill

kill用來終止指定程序 terminate a process 的執行,是linux管理程序的常用命令。通常,終止乙個前台程序可以使用ctrl c,但是對於乙個後台程序就須用kill來終止,我們需要先使用ps pidof pstree top等,獲取程序pid,然後使用kill來殺掉程序。kill...

每天乙個linux命令(42) kill命令

linux中的kill命令用來終止指定的程序 terminate a process 的執行,是linux下程序管理的常用命令。通常,終止乙個前台程序可以使用ctrl c鍵,但是,對於乙個後台程序就須用kill命令來終止,我們就需要先使用ps pidof pstree top等工具獲取程序pid,然...

每天乙個linux命令(10) kill命令

linux kill命令用於刪除執行中的程式或工作。kill可將指定的資訊送至程式。預設的資訊為sigterm 15 可將指定程式終止。若仍無法終止該程式,可使用sigkill 9 資訊嘗試強制刪除程式。程式或工作的編號可利用ps指令或jobs指令檢視。kill s 資訊名稱或編號 程式 或 kil...