linux kill命令詳解

2022-09-23 02:30:11 字數 4154 閱讀 4420

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) 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

說明:只有第9種訊號(sigkill)才可以無條件終止程序,其他訊號程序都有權利忽略。 下面是常用的訊號:

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

[root@localhost test6]# kill -l sigkill

[root@localhost test6]# kill -l term

[root@localhost test6]# kill -l sigterm說明:

例項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

linux kill命令詳解

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

Linux kill命令引數

引用文章 kill l sighup 2 sigint 3 sigquit 4 sigill sigtrap 6 sigabrt 7 sigbus 8 sigfpe sigkill 10 sigusr1 11 sigse 12 sigusr2 sigpipe 14 sigalrm 15 sigter...

linux kill命令的使用

kill命令可以從kill這個詞來大致了解下它的作用,是的,它用來殺死 kill 乙個程序。下面是kill命令的詳解。1.作用 kill命令用來中止乙個程序。2.格式 kill s signal p a pid kill l signal 3.引數 s 指定傳送的訊號。p 模擬傳送訊號。l 指定訊號...