天天看點

精通Linux的“kill”指令

無論你使用哪種作業系統,你一定會遇到某個行為失常的應用,它把自己鎖死并拒絕關閉。在linux(還有mac),你可以用一個"kill"指令強制終結它。在這個教程中,我們将展示給你多種方式使用"kill"指令終結應用。

<a target="_blank"></a>

當你執行一個"kill"指令,你實際上發送了一個信号給系統,讓它去終結不正常的應用。總共有60個你可以使用的信号,但是基本上你隻需要知道sigterm(15)和sigkill(9)。

你可以用這個指令看到所有信号的清單:

<code>kill -l</code>

精通Linux的“kill”指令

sigterm - 此信号請求一個程序停止運作。此信号是可以被忽略的。程序可以用一段時間來正常關閉,一個程式的正常關閉一般需要一段時間來儲存進度并釋放資源。換句話說,它不是強制停止。

sigkill - 此信号強制程序立刻停止運作。程式不能忽略此信号,而未儲存的進度将會丢失。

使用"kill"的文法是:

<code>kill [信号或選項] pid(s)</code>

預設信号(當沒有指定的時候)是sigterm。當它不起作用時,你可以使用下面的指令來強制kill掉一個程序:

<code>kill sigkill pid</code>

或者

<code>kill -9 pid</code>

這裡"-9"代表着sigkill信号。

如果你不知道應用的pid,僅需要運作這個指令:

<code>ps ux</code>

它會顯示所有正在運作的應用還有應用的pid。

精通Linux的“kill”指令

例如,要kill掉chrome,我會運作指令:

<code>kill -9 3629</code>

也可以在同一時間kill多個程序。

<code>kill -9 pid1 pid2 pid3</code>

"pkill"指令允許使用擴充的正規表達式和其它比對方式。你現在可以使用應用的程序名kill掉它們,而不是使用pid。例如,要kill掉firefox浏覽器,隻需要運作指令:

<code>pkill firefox</code>

使用正規表達式比對的話,你可以輸入程序名的部分字元,比如:

<code>pkill fire</code>

為了避免kill掉錯誤的程序,你應該用一下"pgrep -l [程序名]"清單來比對程序名稱。

精通Linux的“kill”指令

killall同樣使用程序名替代pid,并且它會kill掉所有的同名程序。例如,如果你正在運作多個firefox浏覽器的執行個體,可以用指令把它們全部kill掉:

<code>killall firefox</code>

在gnome中,你可以使用這個指令重新開機nautilus:

<code>killall nautilus</code>

當應用不正常而導緻系統挂起的時候,人們往往重新開機計算機并且再一次開啟所有的任務。而有了這些"kill"指令,你将能夠更好的處理不正常的應用,進而避免導緻系統崩潰。當你不想因一個不正常的程序而導緻伺服器當機時,它尤其的有用。

 原文釋出時間為:2013-10-17

本文來自雲栖社群合作夥伴“linux中國”

繼續閱讀