linux殺死程序

2021-05-24 08:08:35 字數 3055 閱讀 4877

root@zhangbin-laptop:/home/zhangbin# ps -ef | grep fcitx

zhangbin  3405  3374  0 feb20 ?        00:00:00 [fcitx]

zhangbin  3415     1  0 feb20 ?        00:00:06 /usr/bin/fcitx

root      3843  3598  0 00:08 pts/0    00:00:00 grep --color=auto fcitx

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 aux 或者 ps ef 檢視所有程序 kill 1827 就是殺死程序號為 1827 的程序 1.檢視程序 ps ef grep firefox 查詢火狐的程序 等價於 pgrep firefox 等價於 pidof firefox 等價於 ps ef grep firefox grep v...

Linux 殺死程序

殺死程序最安全的方法是單純使用kill命令,不加修飾符,不帶標誌。首先使用ps ef命令確定要殺死程序的pid,然後輸入以下命令 kill pid 注釋 標準的kill命令通常都能達到目的。終止有問題的程序,並把程序的資源釋放給系統。然而,如果程序啟動了子程序,只殺死父程序,子程序仍在執行,因此仍消...

linux殺死程序

1.ps ef grep redis ps 將某個程序顯示出來 a 顯示所有程式。e 此引數的效果和指定 a 引數相同。f 顯示uid,ppip,c與stime欄位。grep命令是查詢 中間的 是管道命令 是指ps命令與grep同時執行 這條命令的意思是顯示有關redis有關的程序 2.kill 引...