2013-10-14

Ubuntu 用 pkill 和 killall 同時刪除多個程序

像阿舍在試裝軟體的時候,有時沒設好,就會不小心跑了一堆同樣的程式在記憶體裡,然後,以前阿舍就會傻傻的用 kill 指令來一個一個的把這些掛掉的程序砍掉,一直到後來,有一天阿舍發現了 pkill 和 killall 指令後,阿舍的人生才變回彩色的,喔 ! 不 ! 才省下阿舍好多的時間哩 ! 所以,阿舍今天就來介紹一下這個  pkill 和 killall 指令囉 !

killall 要比對完整才會刪哩

嚴格來說,這個 pkill 指令的作用,其實就是 pgrep + kill 的功能,也就是說,你可以給 pkill 任何一組字串或正規表示式 ( Regular Expression) 當參數,然後,pkill 就會去找出所有符合指定條件的程序名稱,接著,就會送出一個結束程序的訊號 ( SIGTERM ) 給這些符合條件的程序來結束掉這些程序哩 !

而 killall 指令和 pkill 指令最大的不同,就在於 killall 指令是用完整名稱來搜尋要刪除的程序,因此,以阿舍有一堆 apache2 的程序掛在記憶體為例,阿舍如果用 pkill 指令來刪除的話,就只要像下面第一行的指令就可以了 (不需要打入完整的程序名稱),而如果用 killall 指令的話,那就要像下面第二行一樣,用完整的程序名稱當做 killall 的參數,這樣 killall 指令才能夠正確的刪除掉 apache2 這個程序哩 ! 否則,如果和 pkill 一樣,只有拿「apache」給 killall 當參數的話,那麼 killall 指令就會找不到東西可刪哩 !

pkill apache
killall apache2

所以,針對 pkill 和 killall 這二個指令在搜尋要刪除的程序的方式的不同,阿舍一般都是用 pkill 來砍大量的程序會比較快和容易,然後,遇到怕刪除或不能刪除時,就用 killall 指令來確保名稱沒有打錯來多增加一些些的保障囉 ! ... 呵呵

另外,要特別說明的是,killall 指令只會完整比對程序名稱的前 15 個字元,因此,如果你要刪除的那堆程序的名稱有超過 15 字的話,那就要加個「e」選項來要求 killall 指令做完整比對,否則,還是有機會讓 killall 指令刪錯的哩 ! ^^!!

killall -e del-very-long-long-name-processes

推薦閱讀


有疑問? 問題還是沒解決嗎? 歡迎下方留言提問和討論 😁

沒有留言 :

張貼留言

歡迎留言提問和討論 .... 😁