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