Linux 下使用 killall 命令終止程式
Linux 下使用 killall 命令終止程式
Linux 的命令列提供很多命令來殺死程式。比如,你可以向
kill
命傳遞一個PID來殺死程式;
pkill
命令使用一個正規表示式作為輸入,所以和該模式匹配的程式都被殺死。
但是還有一個命令叫
killall
,預設情況下,它精確地匹配引數名,然後殺死匹配程式。在這篇文章中,我們將討論有關這個命令的實際應用。
預設情況下,killall 命令將向一個/組程式傳送一個
SIGTERM
訊號,但是,也可以通過引數傳送一個指定的訊號。
下面我們通過例子詳細介紹 killall 的 8 大用法。
1. 基本用法
假如我們 3 個程式在執行,分別是
hello1, hello2, hello3
,現在我們想殺死 hello1 程式,可以直接使用如下方式:
killall hello1
執行的結果如下:
[alvin@VM_0_16_centos test]$ ps aux | grep hello alvin 12061 0.0 0.0 4152 344 pts/0 S 14:41 0:00 ./hello1 alvin 12074 0.0 0.0 4152 344 pts/0 S 14:41 0:00 ./hello2 alvin 12084 0.0 0.0 4152 340 pts/0 S 14:41 0:00 ./hello3 alvin 12089 0.0 0.0 112648 964 pts/0 R+ 14:41 0:00 grep --color=auto hello [alvin@VM_0_16_centos test]$ killall hello1 [1] Terminated ./hello1 [alvin@VM_0_16_centos test]$ ps aux | grep hello alvin 12074 0.0 0.0 4152 344 pts/0 S 14:41 0:00 ./hello2 alvin 12084 0.0 0.0 4152 340 pts/0 S 14:41 0:00 ./hello3 alvin 12170 0.0 0.0 112648 964 pts/0 R+ 14:42 0:00 grep --color=auto hello
可以看到,hello1 程式已經被殺死了。
剩下的 hello2 和 hello3 程式,我們想一次性殺死他們,也就是批量殺死程式,可以如下操作:
[alvin@VM_0_16_centos test]$ killall hello* hello: no process found hello1: no process found hello.c: no process found [2]- Terminated ./hello2 [3]+ Terminated ./hello3
如此,以 hello 開頭的程式全部被幹掉。
2. 終止某個使用者所執行的程式
我們可以殺死以滿足某個正規表示式的一組程式,同樣的,我們也可以殺死某個使用者執行的所有程式。
比如,使用者 harry 現在執行如下幾個程式:
[alvin@VM_0_16_centos test]$ ps aux | grep harry root 13675 0.0 0.2 148236 5584 ? Ss 14:55 0:00 sshd: harry [priv] harry 13677 0.0 0.1 148236 2944 ? S 14:55 0:00 sshd: harry@pts/1 root 13678 0.0 0.2 148236 5444 ? Ss 14:55 0:00 sshd: harry [priv] harry 13680 0.0 0.1 148236 2252 ? S 14:55 0:00 sshd: harry@notty harry 13681 0.0 0.1 53228 2168 ? Ss 14:55 0:00 /usr/libexec/openssh/sftp-server harry 13694 0.0 0.1 116436 3252 pts/1 Ss+ 14:55 0:00 -bash harry 13948 0.0 0.0 4152 344 pts/1 S 14:57 0:00 ./hello1 harry 13952 0.0 0.0 4152 344 pts/1 S 14:57 0:00 ./hello2 harry 13959 0.0 0.0 4152 344 pts/1 S 14:57 0:00 ./hello3 alvin 14005 0.0 0.0 112648 964 pts/0 R+ 14:58 0:00 grep --color=auto harry
我們現在想殺死 harry 所執行的所有程式,可以以如下方式操作:
killall -u harry
執行結果如下:
[alvin@VM_0_16_centos test]$ sudo killall -u harry [alvin@VM_0_16_centos test]$ ps aux | grep harry alvin 14040 0.0 0.0 112648 964 pts/0 R+ 14:58 0:00 grep --color=auto harry 但是,這個選項要慎用,因為它會把該使用者所有程式,包括終端程式,全部殺死,將導致該使用者直接退出。所以,如果不想捱揍的話不要輕意嘗試這個選項。
3. 終於時間的方式終止程式
假如我們現在執行了很多程式,我們只想殺死執行時間超過 5h 的程式,那麼可以使用
-o
選項,其中 o 代表 older 如下:
killall -o 5h
同樣地,如果你想殺死進行時間小於 4h 的程式,那麼可以使用
-y
選項,其中 y 代表 younger ,如下:
killall -y 4h
這兩個選項同樣非常粗暴,也會把終端退出,所以先不演示了。
4. 忽略大小寫
預設情況下,killall 命令是大小寫敏感的,所以我們如果寫錯大小寫,將無法正確殺死程式。
[alvin@VM_0_16_centos test]$ killall HELLO1 TEST1: no process found
如果我們想忽略大小寫,可以加上
-I
(大寫字母 i )選項。
[alvin@VM_0_16_centos test]$ killall -I HELLO1 [1] Terminated ./hello1
5. 關閉命令執行回顯
預設情況下,killall 會告訴你命令執行情況,但是,我們如果不關心它的執行結果,只想讓它靜默執行,該怎麼辦?只需加上
-q
選項即可,其中 q 表示 quite , 如下:
[alvin@VM_0_16_centos test]$ killall HELLO2 HELLO2: no process found [alvin@VM_0_16_centos test]$ killall -q HELLO2 [alvin@VM_0_16_centos test]$
6. 列出所有支援的訊號
如前文所述,預設情況下,killall 命令將傳送 SIGTERM 訊號,那麼,安可以傳送其它訊號嗎?當然是可以的。可以使用
-l
選項檢視 killall 所支援的所有訊號:
[alvin@VM_0_16_centos test]$ killall -l HUP INT QUIT ILL TRAP ABRT IOT BUS FPE KILL USR1 SEGV USR2 PIPE ALRM TERM STKFLT CHLD CONT STOP TSTP TTIN TTOU URG XCPU XFSZ VTALRM PROF WINCH IO PWR SYS UNUSED
你可以使用
-s
選項(後面跟一個訊號名)來向一個程式傳送特殊訊號。
7. 互動式操作
如果你在殺死多個程式時不太放心,擔心把不該殺死的程式給殺死了,那麼你可以使用
-i
選項,這樣就可以自由決定哪些程式應該被殺死,哪些程式應該被保留。
[alvin@VM_0_16_centos test]$ killall -i hello* Kill hello2(13825) ? (y/N) y Kill hello3(13831) ? (y/N) N hello: no process found hello1: no process found hello3: no process found hello.c: no process found [2]- Terminated ./hello2
8. 等待直到某個程式被終止
當一個訊號被髮送至某個程式,如果你想確定該程式已經被殺死了才返回執行結果,可以使用
-w
選項,其中 w 代表 wait ,如下:
[alvin@VM_0_16_centos test]$ killall -w hello1 [4]+ Terminated ./hello1
這裡好像看不出什麼效果,但實際執行的時候,可以發現執行結果會在一兩秒後出現,而不加 -w 選項的話,執行結果馬上就顯示。
About Me
........................................................................................................................ ● 本文作者:小麥苗,部分內容整理自網路,若有侵權請聯絡小麥苗刪除 ● 本文在itpub( http://blog.itpub.net/26736162 )、部落格園( http://www.cnblogs.com/lhrbest )和個人weixin公眾號( xiaomaimiaolhr )上有同步更新 ● 本文itpub地址: http://blog.itpub.net/26736162 ● 本文部落格園地址: http://www.cnblogs.com/lhrbest ● 本文pdf版、個人簡介及小麥苗雲盤地址: http://blog.itpub.net/26736162/viewspace-1624453/ ● 資料庫筆試面試題庫及解答: http://blog.itpub.net/26736162/viewspace-2134706/ ● DBA寶典今日頭條號地址: http://www.toutiao.com/c/user/6401772890/#mid=1564638659405826 ........................................................................................................................ ● QQ群號: 230161599 (滿) 、618766405 ● weixin群:可加我weixin,我拉大家進群,非誠勿擾 ● 聯絡我請加QQ好友 ( 646634621 ) ,註明新增緣由 ● 於 2019-03-01 06:00 ~ 2019-03-31 24:00 在魔都完成 ● 最新修改時間:2019-03-01 06:00 ~ 2019-03-31 24:00 ● 文章內容來源於小麥苗的學習筆記,部分整理自網路,若有侵權或不當之處還請諒解 ● 版權所有,歡迎分享本文,轉載請保留出處 ........................................................................................................................ ● 小麥苗的微店 : https://weidian.com/s/793741433?wfr=c&ifr=shopdetail ● 小麥苗出版的資料庫類叢書 : http://blog.itpub.net/26736162/viewspace-2142121/ ● 小麥苗OCP、OCM、高可用網路班 : http://blog.itpub.net/26736162/viewspace-2148098/ ● 小麥苗騰訊課堂主頁 : https://lhr.ke.qq.com/ ........................................................................................................................ 使用 weixin客戶端 掃描下面的二維碼來關注小麥苗的weixin公眾號( xiaomaimiaolhr )及QQ群(DBA寶典)、新增小麥苗weixin, 學習最實用的資料庫技術。
........................................................................................................................ |
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/26736162/viewspace-2640059/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- Linux 下使用 killall 命令終止程式的 8 大用法Linux
- Linux基礎命令---殺死程式killallLinux
- Linux基礎命令—killallLinux
- linux下啟動和終止JAVA程式shell指令碼LinuxJava指令碼
- Linux——程式建立、程式終止、程式等待、程式程式替換Linux
- 如何在 Linux 上使用 kill 和 killall 來管理程式Linux
- Linux kill,killall和killall5Linux
- mysql使用KILL命令來終止特定的查詢程序MySql
- Linux下使用script命令記錄終端操作顯示Linux
- 終止指定埠的程式
- response()->download();下載中途終止
- 如何在Linux中使用Shell指令碼終止使用者會話?Linux指令碼會話
- Windows 程式的建立和終止Windows
- Linux系統程式設計之程式控制(程式建立、終止、等待及替換)Linux程式設計
- Linux中EOF自定義終止符介紹Linux
- Android低記憶體終止守護程式Android記憶體
- subprocess.Popen 如何提前終止程式執行
- 在 Linux 命令列下使用“原力”Linux命令列
- 併發程式設計——如何終止執行緒程式設計執行緒
- 【Linux】命令終端美化優化Linux優化
- Linux系統下find、locate命令如何使用?Linux
- 正常終止expdp作業
- 你可以終止 forEach 嗎?
- 終止非同步任務非同步
- CentOS 將於年底終止!CentOS
- 兩階段終止模式模式
- jQuery的each終止或跳過示例程式碼jQuery
- linux下source命令Linux
- Linux下Ollama命令Linux
- linux命令大全-linux命令使用和管理Linux
- python中使用subprocess批量執行linux下命令PythonLinux
- Linux下使用make命令編譯c原始檔Linux編譯
- python中使用subprocess批次執行linux下命令PythonLinux
- 用Python程式如何捕獲Ctrl+C終止訊號?Python
- Docker 容器優雅終止方案Docker
- 3.6 延遲例項終止
- AngularJS終止了長期支援AngularJS
- Thread執行緒終止interruptthread執行緒