2011年11月27日 星期日

[Linux 命令] killall : 根據名稱終止程序

屬性 : 系統相關 - 權限與程序 
與法 : killall [參數] 名稱 
參數 | 功能 
-e | 需要與名稱完全相符
-g | 刪除程序群組
-i | 交談模式, 在刪除前會先詢問
-q | 不在畫面列出被刪除的程序
-v | 顯示完整過程.
名稱 : 執行中的程序所包含的字串. 

補充說明 : 
1. killall是根據名稱終止程序, 對於一次刪除相同名稱的許多程序,會比指令kill 來的方便. 


轉載自 鳥哥
由於 kill 後面必須要加上 PID (或者是 job number),所以,通常 kill 都會配合 ps, pstree 等指令,因為我們必須要找到相對應的那個程序的 ID 嘛!但是,如此一來,很麻煩~有沒有可以利用『下達指令的名稱』來給予訊號的?舉例來說,能不能直接將 syslog 這個程序給予一個 SIGHUP 的訊號呢?可以的!用 killall 吧. 
# killall [-iIe] [command name]
選項與參數:
-i :interactive 的意思,互動式的,若需要刪除時,會出現提示字元給使用者;
-e :exact 的意思,表示『後面接的 command name 要一致』,但整個完整的指令
不能超過 15 個字元。
-I :指令名稱(可能含參數)忽略大小寫

範例說明 : 
* 範例一:給予 syslogd 這個指令啟動的 PID 一個 SIGHUP 的訊號 
# killall -1 syslogd
# 如果用 ps aux 仔細看一下,syslogd 才是完整的指令名稱。但若包含整個參數,
# 則 syslogd -m 0 才是完整的呢

* 範例二:強制終止所有以 httpd 啟動的程序 
# killall -9 httpd

* 範例三:依次詢問每個 bash 程式是否需要被終止運作 
# killall -i -9 bash
Kill bash(16905) ? (y/N) n <==這個不殺!
Kill bash(17351) ? (y/N) y <==這個殺掉!
# 具有互動的功能!可以詢問你是否要刪除 bash 這個程式。要注意,若沒有 -i 的參數,
# 所有的 bash 都會被這個 root 給殺掉!包括 root 自己的 bash 喔!

總之,要刪除某個程序,我們可以使用 PID 或者是啟動該程序的指令名稱, 而如果要刪除某個服務呢?呵呵!最簡單的方法就是利用 killall , 因為他可以將系統當中所有以某個指令名稱啟動的程序全部刪除。 舉例來說,上面的範例二當中,系統內所有以 httpd 啟動的程序,就會通通的被刪除啦!

沒有留言:

張貼留言

[Git 常見問題] error: The following untracked working tree files would be overwritten by merge

  Source From  Here 方案1: // x -----删除忽略文件已经对 git 来说不识别的文件 // d -----删除未被添加到 git 的路径中的文件 // f -----强制运行 #   git clean -d -fx 方案2: 今天在服务器上  gi...