五個你可能不了解的killall選項
Linux的命令行提供很多命令來殺死進程。比如,你可以向「kill」命傳遞一個PID來殺死進程;「pkill」命令使用一個正則表達式作為輸入,所以和該模式匹配的進程都被殺死。
但是還有一個命令叫「killall」,默認情況下,它精確地匹配參數名,然後殺死匹配進程。在這篇文章中,我們將討論有關這個命令的實際應用。
Linux 的 killall 命令
killall命令可以用來給一個特定的進程發送一個信號。這個信號默認情況下是SIGTERM,但也可以由killall命令使用參數來指定其它信號。
現在讓我們通過一些實際的例子來看看這個命令的實際用法。
1. 基本示例
在這個例子中,我們將使用killall來殺死特定進程。假如,有兩個開頭字元相同的進程:
如何殺死「test_again」進程呢?
如你所見,killall命令終止了「test_again」進程。你可以通過ps命令來確認這個事實:
你可以觀察到「test_again」沒有被顯示出來,因為它已經被殺死了。
2. 使用 -I 選項忽略大小寫
默認情況下,killall命令是大小寫敏感的。例如:
你可以看到,killall命令找不到叫做「TEST」的進程,但是「test」進程是確確實實的在運行的。
來讓killall命令忽略大小寫,可以使用-I選項(大寫i)。例如:
你可以觀察到,現在你成功的終止了「test」進程。
3. 使用 -i 選項互動式的終止進程
killall命令可以用來終止多個進程。
但是,如果你想要killall互動式地來終止進程,你可以使用-i選項。
這裡是例子:
你可以看到,用這種方式,在同時終止多個進程時,用戶可以控制是否終止某一個進程。
4. 使用 -q 選項關閉命令執行回顯
有些時候,當killall找不到指定的進程時,它就會像下面這樣輸出錯誤信息。
但是,當你想要killall執行地安安靜靜的話,你就可以使用-q選項:
如你所見,-q選項被使用之後,killall命令的輸出信息就被抑制了。
5. 使用-l選項列出所有支持的信號(signal)
如之前描述的一樣,killall向進程發送信號。
你可以使用-s選項(後面跟一個信號名)來向一個進程發送特殊信號。
想要知道所有可以發送的信號,可以使用-l選項(小寫L)來獲取:
killall支持上面的所有信號。
看著這些信號的名字,可能你心裡就會嘀咕:這些信號都是幹什麼的?
譯者註:使用下面的命令來獲取所有信號的說明:
我需要和大家討論一件事情
killall命令的man說:假如進程的名字的長度小於等於15,默認情況下就會以完整名稱匹配。
比如,假設有兩個名字很長的進程:
第一個進程的名字有15個字元。現在,讓我們試著使用killall殺死這個進程:
它只殺死了指定的進程,另一個則沒有被殺死。
我不太確定,是我進行的嘗試中有不對的地方,還是這是killall的一個bug。假如你在評論中寫上你的觀點,我會非常感激。
順便說一下,這是我機器上killall命令的版本信息:
來自Linux中國
※網路視頻直播系統需要執行的優化方案
※使用AOP實現許可權攔截校驗
TAG:千鋒JAVA開發學院 |