![]() |
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
問題還是沒解決嗎 ?? 這裡有更多的 Ubuntu 相關教學可以參考哩 ...
買本阿舍寫的電子書帶走 - Ubuntu 指令新手馬上會用到的 35 個技法
沒有留言 :
張貼留言