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