kill[參數(shù)][進(jìn)程號(hào)]
2.命令功能:
參數(shù)說明:/pid 要終止進(jìn)程的pid,可用tasklist命令獲得各進(jìn)程的pid,/im 要終止的進(jìn)程的進(jìn)程名,/f 強(qiáng)制終止進(jìn)程,/t 終止指定的進(jìn)程及他所啟動(dòng)的子進(jìn)程。表示當(dāng)前命令是否正在執(zhí)行的信號(hào).raccommand被excute調(diào)用后,且在信號(hào)終止前,這個(gè)信號(hào)會(huì)發(fā)送yes.當(dāng)信號(hào)結(jié)束了,會(huì)發(fā)送no.。它的進(jìn)程號(hào)始終為1,所以發(fā)送term信號(hào)給init會(huì)終止所有的用戶進(jìn)程,守護(hù)進(jìn)程等。
3.命令參數(shù):
-l信號(hào),若果不加信號(hào)的編號(hào)參數(shù),則使用“-l”參數(shù)會(huì)列出全部的信號(hào)名稱
-a當(dāng)處理當(dāng)前進(jìn)程時(shí),不限制命令名和進(jìn)程號(hào)的對(duì)應(yīng)關(guān)系
-p指定kill命令只打印相關(guān)進(jìn)程的進(jìn)程號(hào),而不發(fā)送任何信號(hào)
-s指定發(fā)送信號(hào)
-u指定用戶
注意:
1、kill命令可以帶信號(hào)號(hào)碼選項(xiàng),也可以不帶。如果沒有信號(hào)號(hào)碼,kill命令就會(huì)發(fā)出終止信號(hào)(15),這個(gè)信號(hào)可以被進(jìn)程捕獲,使得進(jìn)程在退出之前可以清理并釋放資源。也可以用kill向進(jìn)程發(fā)送特定的信號(hào)。例如:
kill-2123
它的效果等同于在前臺(tái)運(yùn)行PID為123的進(jìn)程時(shí)按下Ctrl+C鍵。但是,普通用戶只能使用不帶signal參數(shù)的kill命令或最多使用-9信號(hào)。
若pid等于-1,則信號(hào)將被發(fā)送到所有的進(jìn)程(特殊系統(tǒng)進(jìn)程除外). 信號(hào)要發(fā)送到指定的進(jìn)程,首先調(diào)用進(jìn)程必須有對(duì)該進(jìn)程發(fā)送信號(hào)的權(quán)限.若調(diào)用進(jìn)程有合適的優(yōu)先級(jí)則具備有權(quán)限.若調(diào)用進(jìn)程的實(shí)際或有效的uid等于接收信號(hào)的進(jìn)程的實(shí)際uid或用setuid()。以上解釋了測(cè)試1,2的現(xiàn)象,write一個(gè)已經(jīng)接受到rst的socketlinux命令大全,系統(tǒng)內(nèi)核會(huì)發(fā)送sigpipe給發(fā)送進(jìn)程,如果進(jìn)程catch/ignore這個(gè)信號(hào),write都返回epipe錯(cuò)誤.。錯(cuò)誤被描述為“broken pipe”,即“管道破裂”,這種情況一般發(fā)生在客戶進(jìn)程不理會(huì)(或未及時(shí)處理)socket 錯(cuò)誤,繼續(xù)向服務(wù) tcp 寫入更多數(shù)據(jù)時(shí),內(nèi)核將向客戶進(jìn)程發(fā)送 sigpipe 信號(hào),該信號(hào)默認(rèn)會(huì)使進(jìn)程終止(此時(shí)該前臺(tái)進(jìn)程未進(jìn)行 core dump)。
3、可以向多個(gè)進(jìn)程發(fā)信號(hào)或終止它們。
4、當(dāng)kill成功地發(fā)送了信號(hào)后,shell會(huì)在屏幕上顯示出進(jìn)程的終止信息。有時(shí)這個(gè)信息不會(huì)馬上顯示,只有當(dāng)按下Enter鍵使shell的命令提示符再次出現(xiàn)時(shí),才會(huì)顯示出來。
5、應(yīng)注意,信號(hào)使進(jìn)程強(qiáng)行終止,這常會(huì)帶來一些副作用,如數(shù)據(jù)丟失或者終端無法恢復(fù)到正常狀態(tài)。發(fā)送信號(hào)時(shí)必須小心,只有在萬不得已時(shí),才用kill信號(hào)(9),因?yàn)檫M(jìn)程不能首先捕獲它。要撤銷所有的后臺(tái)作業(yè),可以輸入kill0。因?yàn)橛行┰诤笈_(tái)運(yùn)行的命令會(huì)啟動(dòng)多個(gè)進(jìn)程,跟蹤并找到所有要?dú)⒌舻倪M(jìn)程的PID是件很麻煩的事。這時(shí),使用kill0來終止所有由當(dāng)前shell啟動(dòng)的進(jìn)程,是個(gè)有效的方法。
4.使用實(shí)例:
實(shí)例1:列出所有信號(hào)名稱
命令:
kill-l
輸出:
[root@localhosttest6]#kill-l
1)SIGHUP2)SIGINT3)SIGQUIT4)SIGILL
5)SIGTRAP6)SIGABRT7)SIGBUS8)SIGFPE
9)SIGKILL10)SIGUSR111)SIGSEGV12)SIGUSR2
13)SIGPIPE14)SIGALRM15)SIGTERM16)SIGSTKFLT
17)SIGCHLD18)SIGCONT19)SIGSTOP20)SIGTSTP
21)SIGTTIN22)SIGTTOU23)SIGURG24)SIGXCPU
25)SIGXFSZ26)SIGVTALRM27)SIGPROF28)SIGWINCH