ps 和 kill 命令詳解

2021-08-30 03:43:28 字數 2723 閱讀 2824

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瀏覽器的程式。首先用top命令查處該程式的 pid,然後使用kill命令停止這個程式:

#kill -sigkill ***

其中,***是包含有mozolla瀏覽器的程式的程序標識號。

(3)使用命令**記憶體

我們知道記憶體對於系統是非常重要的,**記憶體可以提高系統資源。kill命令可以及時地中止一些「越軌」的程式或很長時間沒有相應的程式。例如,使用top命令發現乙個無用 (zombie) 的程序,此時可以使用下面命令:

#kill -9 ***

其中,***是無用的程序標識號。

然後使用下面命令:

#free

此時會發現可用記憶體容量增加了。

(4)killall命令

linux下還提供了乙個killall命令,可以直接使用程序的名字而不是程序標識號,例如:

# killall -hup inetd

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

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

# kill -pid

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

*確定要殺死程序的pid或ppid

*以優雅的方式結束程序

# kill -l pid

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

*term訊號

給父程序傳送乙個term訊號,試圖殺死它和它的子程序。

# kill -term ppid

*killall命令

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

*停止和重啟程序

有時候只想簡單的停止和重啟程序。如下:

# kill -hup pid

該命令讓linux和緩的執行程序關閉,然後立即重啟。在配置應用程式的時候,這個命令很方便,在對配置檔案修改後需要重啟程序時就可以執行此命令。

*絕殺 kill -9 pid

同意的 kill -s sigkill

這個強大和危險的命令迫使程序在執行時突然終止,程序在結束後不能自我清理。危害是導致系統資源無法正常釋放,一般不推薦使用,除非其他辦法都無效。

當使用此命令時,一定要通過ps -ef確認沒有剩下任何殭屍程序。只能通過終止父程序來消除殭屍程序。如果殭屍程序被init收養,問題就比較嚴重了。殺死init程序意味著關閉系統。

如果系統中有殭屍程序,並且其父程序是init,而且殭屍程序占用了大量的系統資源,那麼就需要在某個時候重啟機器以清除程序表了。

linux程序命令 Ps和 kill

1.ps命令及其引數 ps命令最常用的還是用於監控後台程序的工作情況,因為後台程序是不和螢幕鍵盤 些標準輸入 輸出裝置進行通訊的,所以如果需要檢測其情況,便可以使用ps命令了。該命令語法格式如下 ps 選項 下面對命令選項進行說明 e 顯示所有程序。f 全格式。h 不顯示標題。l 長格式。w 寬輸出...

kill 命令詳解

介紹乙個li nux開發除錯中經常用到的命令 kill。kill命令用來刪除執行中的程式或工作。kill可將指定的資訊送至程式。預設的資訊為sigterm 15 可將指定程式終止。若仍無法終止該程式,可使用sigkill 9 資訊嘗試強制刪除程式。程式或工作的編號可利用ps指令或job指令檢視。ki...

ps和kill命令的引數及含義

1 ps a 顯示現行終端機下的所有程式,包括其他使用者的程式。2 ps a 顯示所有程式。3 ps c 列出程式時,顯示每個程式真正的指令名稱,而不包含路徑,引數或常駐服務的標示。4 ps e 此引數的效果和指定 a 引數相同。5 ps e 列出程式時,顯示每個程式所使用的環境變數。6 ps f ...