linux中的kill命令的詳細(xì)解釋
linxu下的kill命令主要功能是用來(lái)殺死進(jìn)程的。下面由學(xué)習(xí)啦小編為大家整理了linux的kill命令的詳細(xì)解釋的相關(guān)知識(shí),希望對(duì)大家有幫助!
一、linux中的kill命令的詳細(xì)解釋
1.命令格式:
kill[參數(shù)][進(jìn)程號(hào)]
2.命令功能:
發(fā)送指定的信號(hào)到相應(yīng)進(jìn)程。不指定型號(hào)將發(fā)送SIGTERM(15)終止指定進(jìn)程。如果任無(wú)法終止該程序可用“-KILL” 參數(shù),其發(fā)送的信號(hào)為SIGKILL(9) ,將強(qiáng)制結(jié)束進(jìn)程,使用ps命令或者jobs 命令可以查看進(jìn)程號(hào)。root用戶(hù)將影響用戶(hù)的進(jìn)程,非root用戶(hù)只能影響自己的進(jìn)程。
3.命令參數(shù):
-l 信號(hào),若果不加信號(hào)的編號(hào)參數(shù),則使用“-l”參數(shù)會(huì)列出全部的信號(hào)名稱(chēng)
-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 指定用戶(hù)
注意:
1、kill命令可以帶信號(hào)號(hào)碼選項(xiàng),也可以不帶。如果沒(méi)有信號(hào)號(hào)碼,kill命令就會(huì)發(fā)出終止信號(hào)(15),這個(gè)信號(hào)可以被進(jìn)程捕獲,使得進(jìn)程在退出之前可以清理并釋放資源。也可以用kill向進(jìn)程發(fā)送特定的信號(hào)。例如:
kill -2 123
它的效果等同于在前臺(tái)運(yùn)行PID為123的進(jìn)程時(shí)按下Ctrl+C鍵。但是,普通用戶(hù)只能使用不帶signal參數(shù)的kill命令或最多使用-9信號(hào)。
2、kill可以帶有進(jìn)程ID號(hào)作為參數(shù)。當(dāng)用kill向這些進(jìn)程發(fā)送信號(hào)時(shí),必須是這些進(jìn)程的主人。如果試圖撤銷(xiāo)一個(gè)沒(méi)有權(quán)限撤銷(xiāo)的進(jìn)程或撤銷(xiāo)一個(gè)不存在的進(jìn)程,就會(huì)得到一個(gè)錯(cuò)誤信息。
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ì)顯示出來(lái)。
5、應(yīng)注意,信號(hào)使進(jìn)程強(qiáng)行終止,這常會(huì)帶來(lái)一些副作用,如數(shù)據(jù)丟失或者終端無(wú)法恢復(fù)到正常狀態(tài)。發(fā)送信號(hào)時(shí)必須小心,只有在萬(wàn)不得已時(shí),才用kill信號(hào)(9),因?yàn)檫M(jìn)程不能首先捕獲它。要撤銷(xiāo)所有的后臺(tái)作業(yè),可以輸入kill 0。因?yàn)橛行┰诤笈_(tái)運(yùn)行的命令會(huì)啟動(dòng)多個(gè)進(jìn)程,跟蹤并找到所有要?dú)⒌舻倪M(jìn)程的PID是件很麻煩的事。這時(shí),使用kill 0來(lái)終止所有由當(dāng)前shell啟動(dòng)的進(jìn)程,是個(gè)有效的方法。
二、linux中的kill命令的詳解實(shí)例
(1)強(qiáng)行中止(經(jīng)常使用殺掉)一個(gè)進(jìn)程標(biāo)識(shí)號(hào)為324的進(jìn)程:
#kill -9 324
(2)解除Linux系統(tǒng)的死鎖
在Linux中有時(shí)會(huì)發(fā)生這樣一種情況:一個(gè)程序崩潰,并且處于死鎖的狀態(tài)。此時(shí)一般不用重新啟動(dòng)計(jì)算機(jī),只需要中止(或者說(shuō)是關(guān)閉)這個(gè)有問(wèn)題的程序即可。當(dāng)kill處于X-Window界面時(shí),主要的程序(除了崩潰的程序之外)一般都已經(jīng)正常啟動(dòng)了。此時(shí)打開(kāi)一個(gè)終端,在那里中止有問(wèn)題的程序。比如,如果Mozilla瀏覽器程序出現(xiàn)了鎖死的情況,可以使用kill命令來(lái)中止所有包含有Mozolla瀏覽器的程序。首先用top命令查處該程序的 PID,然后使用kill命令停止這個(gè)程序:
#kill -SIGKILL XXX
其中,XXX是包含有Mozolla瀏覽器的程序的進(jìn)程標(biāo)識(shí)號(hào)。
(3)使用命令回收內(nèi)存
我們知道內(nèi)存對(duì)于系統(tǒng)是非常重要的,回收內(nèi)存可以提高系統(tǒng)資源。kill命令可以及時(shí)地中止一些“越軌”的程序或很長(zhǎng)時(shí)間沒(méi)有相應(yīng)的程序。例如,使用top命令發(fā)現(xiàn)一個(gè)無(wú)用 (Zombie) 的進(jìn)程,此時(shí)可以使用下面命令:
#kill -9 XXX
其中,XXX是無(wú)用的進(jìn)程標(biāo)識(shí)號(hào)。
然后使用下面命令:
#free
此時(shí)會(huì)發(fā)現(xiàn)可用內(nèi)存容量增加了。
(4)killall命令
Linux下還提供了一個(gè)killall命令,可以直接使用進(jìn)程的名字而不是進(jìn)程標(biāo)識(shí)號(hào),例如:
# killall -HUP inetd
三、linux的kill命令的常用命令
常用命令
1.$ kill -15 pid
這條命令發(fā)信號(hào)讓進(jìn)程正常退出。所謂的正常退出是指按應(yīng)用程序自己的退出流程完成退出,這樣就可以清理并釋放資源。比如 vim 程序,如果是正常的退出,就會(huì)刪除掉臨時(shí)文件 *.swp。
既然信號(hào) 15 是退出進(jìn)程的正確方式,那它也應(yīng)該是最常用的方式,因而我們可以省略參數(shù) -15。
2.$ kill pid
這條命令和上面的命令是等價(jià)的,kill 命令默認(rèn)發(fā)送信號(hào) 15 給目標(biāo)進(jìn)程。
當(dāng)進(jìn)程出現(xiàn)了異常狀況,不能通過(guò)信號(hào)15正常退出時(shí),我們就需要通過(guò)非常的手段直接終結(jié)掉進(jìn)程。所謂的非常手段就是傳遞信號(hào) 9 給目標(biāo)進(jìn)程!
3.$ kill -9 pid
這樣結(jié)束掉的進(jìn)程不會(huì)進(jìn)行資源的清理工作,所以如果你用它來(lái)終結(jié)掉 vim 的進(jìn)程,就會(huì)發(fā)現(xiàn)臨時(shí)文件 *.swp 沒(méi)有被刪除。