linux中的kill命令 及 強制終止進程的方法


在linux上進行工作,常常需要使用kill命令中止進程。一般情況下,使用ps命令找出待中止的進程ID,直接使用"kill PID"就可以了。但這個命令偶爾也會失效,進程無法中止,這時,就需要對kill命令進行一些深入了解,來尋求解決辦法。

先看一下linux對kill命令的描述:
DESCRIPTION
       The  command kill sends the specified signal to the specified process or process group.  If no signal is specified, the TERM signal is sent.
       The TERM signal will kill processes which do not catch this signal.  For other processes, it may be necessary to use the  KILL  (9)  signal, since this signal cannot be caught.
       ...
原來,kill命令可以發送多個不同的信號。默認(缺省)情況下,kill發送的是TERM,即15(SIGTERM)信號,"kill PID"與"kill -15 PID"是一樣的。這個信號通常會要求程序自己正常退出,是一種比較安全的用法。但它是可以被阻塞,處理和忽略的,所以對於有的進程,會中止失敗。
另一個常用的信號是9(SIGKILL),這個命令表示立即結束程序,是不能被阻塞,處理和忽略的。在TERM信號失效的情況下,可以嘗試使用"kill -9 PID"。使用"kill -l",可以查看更多的信號列表。

雖然"kill -9"命令已經很強大,但也有可能還是不能達到目的。這時候,還有一個辦法,就是使用"ps -ef"找出待中止的進程的父進程(PPID),然后使用kill或killall命令殺掉它。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM