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) 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:得到指定訊號的數值
命令:輸出:
[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命令
將我遇到的linux指令總結一下,不斷增加 1 sz和rz 一般來說,linux 伺服器大多是通過 ssh客戶端來進行遠端的登陸和管理的,使用 ssh登陸 linux ssh有關的兩個命令可以提供很方便的操作 sz 將選定的檔案傳送 send 到本地機器 rz 執行該命令會彈出乙個檔案選擇視窗,從本...
每天乙個linux命令
linux cmp命令 linux cmp命令用於比較兩個檔案是否有差異。當相互比較的兩個檔案完全一樣時,則該指令不會顯示任何資訊。若發現有所差異,缺省會標示出第乙個不同之處的字元和列數編號。若不指定任何檔名稱或是所給予的檔名為 則cmp指令會從標準輸入裝置讀取資料。語法cmp clsv i 字元數...
每天乙個 Linux 命令
head 與 tail 就像它的名字一樣的淺顯易懂,它是用來顯示開頭或結尾某個數量的文字區塊,head 用來顯示檔案的開頭至標準輸出中,而 tail 想當然爾就是看檔案的結尾。1 命令格式 head 引數 檔案 2 命令功能 head 用來顯示檔案的開頭至標準輸出中,預設head命令列印其相應檔案的...