CentOS7 linux kill 命令

殺死進程最安全的方法是單純使用kill命令,不加修飾符,不帶標誌。

首先使用ps -ef命令確定要殺死進程的PID,然後輸入以下命令: 
# kill –pid

註釋:標準的kill命令通常都能達到目的。終止有問題的進程,並把進程的資源釋放給系統。然而,如果進程啓動了子進程,只殺死父進程,子進程仍在運行,因此仍消耗資源。爲了防止這些所謂的“殭屍進程”,應確保在殺死父進程之前,先殺死其所有的子進程。

確定要殺死進程的PID或PPID 
# ps -ef | grep httpd

以優雅的方式結束進程 
# kill -l PID

-l選項告訴kill命令用好像啓動進程的用戶已註銷的方式結束進程。當使用該選項時,kill命令也試圖殺死所留下的子進程。但這個命令也不是總能成功--或許仍然需要先手工殺死子進程,然後再殺死父進程。

TERM信號 
給父進程發送一個TERM信號,試圖殺死它和它的子進程。 
# kill -TERM PPID

killall命令 
killall命令殺死同一進程組內的所有進程。其允許指定要終止的進程的名稱,而非PID。

# killall httpd

停止和重啓進程 
有時候只想簡單的停止和重啓進程。如下: 
# kill -HUP PID 
該命令讓Linux和緩的執行進程關閉,然後立即重啓。在配置應用程序的時候,這個命令很方便,在對配置文件修改後需要重啓進程時就可以執行此命令。
 

 使用linux操作系統,難免遇到一些軟件"卡殼"的問題,這時就需要使用linux下強大的kill命令來結束相關進程。這在linux系統下是極其容易的事情,你只需要kill xxx即可,這裏xxx代表與此軟件運行相關的進程PID號。
    首先,我們需要使用linux下另外一個ps命令查找與進程相關的PID號:ps aux | grep program_filter_word
    ps a 顯示現行終端機下的所有程序,包括其他用戶的程序。 
    ps -A 顯示所有程序。 
    ps c 列出程序時,顯示每個程序真正的指令名稱,而不包含路徑,參數或常駐服務的標示。 
    ps -e 此參數的效果和指定"A"參數相同。 
    ps e 列出程序時,顯示每個程序所使用的環境變量。 
    ps f 用ASCII字符顯示樹狀結構,表達程序間的相互關係。 
    ps -H 顯示樹狀結構,表示程序間的相互關係。 
    ps -N 顯示所有的程序,除了執行ps指令終端機下的程序之外。 
    ps s 採用程序信號的格式顯示程序狀況。 
    ps S 列出程序時,包括已中斷的子程序資料。 
    ps -t<終端機編號> 指定終端機編號,並列出屬於該終端機的程序的狀況。 
    ps u 以用戶爲主的格式來顯示程序狀況。 
    ps x 顯示所有程序,不以終端機來區分。
    最常用的方法是ps aux,然後再通過管道使用grep命令過濾查找特定的進程,然後再對特定的進程進行操作。
    其次,使用kill命令結束進程:kill xxx
    1)作用
    kill命令用來中止一個進程。
    2)格式
    kill [ -s signal | -p ] [ -a ] pid ...
    kill -l [ signal ]
    3)參數
    -s:指定發送的信號。
    -p:模擬發送信號。
    -l:指定信號的名稱列表。
    pid:要中止進程的ID號。
    Signal:表示信號。
    4)說明
    進程是Linux系統中一個非常重要的概念。Linux是一個多任務的操作系統,系統上經常同時運行着多個進程。我們不關心這些進程究竟是如何分配的,或者是內核如何管理分配時間片的,所關心的是如何去控制這些進程,讓它們能夠很好地爲用戶服務。
    Linux操作系統包括三種不同類型的進程,每種進程都有自己的特點和屬性。交互進程是由一個Shell啓動的進程。交互進程既可以在前臺運行,也可以在後臺運行。批處理進程和終端沒有聯繫,是一個進程序列。監控進程(也稱系統守護進程)是Linux系統啓動時啓動的進程,並在後臺運行。例如,httpd 是著名的Apache服務器的監控進程。
    kill命令的工作原理是,向Linux系統的內核發送一個系統操作信號和某個程序的進程標識號,然後系統內核就可以對進程標識號指定的進程進行操作。比如在top命令中,我們看到系統運行許多進程,有時就需要使用kill中止某些進程來提高系統資源。在講解安裝和登陸命令時,曾提到系統多個虛擬控制檯的作用是當一個程序出錯造成系統死鎖時,可以切換到其它虛擬控制檯工作關閉這個程序。此時使用的命令就是kill,因爲kill是大多數Shell內部命令可以直接調用的。
    5)應用實例
    (1)強行中止(經常使用殺掉)一個進程標識號爲324的進程:
    #kill -9 324
    (2)解除Linux系統的死鎖
    在 Linux中有時會發生這樣一種情況:一個程序崩潰,並且處於死鎖的狀態。此時一般不用重新啓動計算機,只需要中止(或者說是關閉)這個有問題的程序即可。當kill處於X-Window界面時,主要的程序(除了崩潰的程序之外)一般都已經正常啓動了。此時打開一個終端,在那裏中止有問題的程序。比如,如果Mozilla瀏覽器程序出現了鎖死的情況,可以使用kill命令來中止所有包含有Mozolla瀏覽器的程序。首先用ps命令查找該程序的 PID,然後使用kill命令停止這個程序:
    #kill -SIGKILL XXX
    其中,XXX是包含有Mozolla瀏覽器的程序的進程標識號。
    (3)使用命令回收內存
    我們知道內存對於系統是非常重要的,回收內存可以提高系統資源。kill命令可以及時地中止一些"越軌"的程序或很長時間沒有相應的程序。例如,使用top命令發現一個無用 (Zombie) 的進程,此時可以使用下面命令:
    #kill -9 XXX
    其中,XXX是無用的進程標識號。
    然後使用下面命令:
    #free
    此時會發現可用內存容量增加了。
    (4)killall命令
    Linux下還提供了一個killall命令,可以直接使用進程的名字而不是進程標識號,例如:
    # killall -HUP inetd

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章