天天看點

Shell 查找和關閉程序

首先使用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和緩的執行程序關閉,然後立即重新開機。在配置應用程式的時候,這個指令很友善,在對配置檔案修改後需要重新開機程序時就可以執行此指令。

絕殺 kill -9 pid

同意的 kill -s sigkill

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

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

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

Shell 查找和關閉程式