自拍偷在线精品自拍偷,亚洲欧美中文日韩v在线观看不卡

Linux下使用killall命令終止進(jìn)程的8大用法

系統(tǒng) Linux
Linux 的命令行提供很多命令來(lái)殺死進(jìn)程。比如,你可以向 kill 命傳遞一個(gè)PID來(lái)殺死進(jìn)程;pkill 命令使用一個(gè)正則表達(dá)式作為輸入,所以和該模式匹配的進(jìn)程都被殺死。

[[263006]]

Linux 的命令行提供很多命令來(lái)殺死進(jìn)程。比如,你可以向 kill 命傳遞一個(gè)PID來(lái)殺死進(jìn)程;pkill 命令使用一個(gè)正則表達(dá)式作為輸入,所以和該模式匹配的進(jìn)程都被殺死。

但是還有一個(gè)命令叫 killall ,默認(rèn)情況下,它精確地匹配參數(shù)名,然后殺死匹配進(jìn)程。在這篇文章中,我們將討論有關(guān)這個(gè)命令的實(shí)際應(yīng)用。

默認(rèn)情況下,killall 命令將向一個(gè)/組進(jìn)程發(fā)送一個(gè) SIGTERM 信號(hào),但是,也可以通過(guò)參數(shù)發(fā)送一個(gè)指定的信號(hào)。

下面我們通過(guò)例子詳細(xì)介紹 killall 的 8 大用法。

1、基本用法

假如我們 3 個(gè)進(jìn)程在運(yùn)行,分別是 hello1, hello2, hello3 ,現(xiàn)在我們想殺死 hello1 進(jìn)程,可以直接使用如下方式: 

  1. killall hello1 

運(yùn)行的結(jié)果如下: 

  1. [alvin@VM_0_16_centos test]$ ps aux | grep hello  
  2. alvin    12061  0.0  0.0   4152   344 pts/0    S    14:41   0:00 ./hello1  
  3. alvin    12074  0.0  0.0   4152   344 pts/0    S    14:41   0:00 ./hello2  
  4. alvin    12084  0.0  0.0   4152   340 pts/0    S    14:41   0:00 ./hello3  
  5. alvin    12089  0.0  0.0 112648   964 pts/0    R+   14:41   0:00 grep --color=auto hello  
  6. [alvin@VM_0_16_centos test]$ killall hello1  
  7. [1]   Terminated              ./hello1  
  8. [alvin@VM_0_16_centos test]$ ps aux | grep hello  
  9. alvin    12074  0.0  0.0   4152   344 pts/0    S    14:41   0:00 ./hello2  
  10. alvin    12084  0.0  0.0   4152   340 pts/0    S    14:41   0:00 ./hello3  
  11. alvin    12170  0.0  0.0 112648   964 pts/0    R+   14:42   0:00 grep --color=auto hello 

可以看到,hello1 進(jìn)程已經(jīng)被殺死了。

剩下的 hello2 和 hello3 進(jìn)程,我們想一次性殺死他們,也就是批量殺死進(jìn)程,可以如下操作: 

  1. [alvin@VM_0_16_centos test]$ killall hello*  
  2. hello: no process found  
  3. hello1: no process found  
  4. hello.c: no process found  
  5. [2]-  Terminated              ./hello2  
  6. [3]+  Terminated              ./hello3 

如此,以 hello 開(kāi)頭的進(jìn)程全部被干掉。

2、終止某個(gè)用戶所運(yùn)行的進(jìn)程

我們可以殺死以滿足某個(gè)正則表達(dá)式的一組進(jìn)程,同樣的,我們也可以殺死某個(gè)用戶運(yùn)行的所有進(jìn)程。

比如,用戶 harry 現(xiàn)在運(yùn)行如下幾個(gè)進(jìn)程: 

  1. [alvin@VM_0_16_centos test]$ ps aux | grep harry  
  2. root     13675  0.0  0.2 148236  5584 ?        Ss   14:55   0:00 sshd: harry [priv]  
  3. harry    13677  0.0  0.1 148236  2944 ?        S    14:55   0:00 sshd: harry@pts/1  
  4. root     13678  0.0  0.2 148236  5444 ?        Ss   14:55   0:00 sshd: harry [priv]  
  5. harry    13680  0.0  0.1 148236  2252 ?        S    14:55   0:00 sshd: harry@notty  
  6. harry    13681  0.0  0.1  53228  2168 ?        Ss   14:55   0:00 /usr/libexec/openssh/sftp-server  
  7. harry    13694  0.0  0.1 116436  3252 pts/1    Ss+  14:55   0:00 -bash  
  8. harry    13948  0.0  0.0   4152   344 pts/1    S    14:57   0:00 ./hello1  
  9. harry    13952  0.0  0.0   4152   344 pts/1    S    14:57   0:00 ./hello2  
  10. harry    13959  0.0  0.0   4152   344 pts/1    S    14:57   0:00 ./hello3  
  11. alvin    14005  0.0  0.0 112648   964 pts/0    R+   14:58   0:00 grep --color=auto harry 

我們現(xiàn)在想殺死 harry 所運(yùn)行的所有進(jìn)程,可以以如下方式操作: 

  1. killall -u harry 

運(yùn)行結(jié)果如下: 

  1. [alvin@VM_0_16_centos test]$ sudo killall -u harry  
  2. [alvin@VM_0_16_centos test]$ ps aux | grep harry  
  3. alvin    14040  0.0  0.0 112648   964 pts/0    R+   14:58   0:00 grep --color=auto harry 

但是,這個(gè)選項(xiàng)要慎用,因?yàn)樗鼤?huì)把該用戶所有進(jìn)程,包括終端進(jìn)程,全部殺死,將導(dǎo)致該用戶直接退出。所以,如果不想挨揍的話不要輕意嘗試這個(gè)選項(xiàng)。

3、終于時(shí)間的方式終止進(jìn)程

假如我們現(xiàn)在運(yùn)行了很多程序,我們只想殺死運(yùn)行時(shí)間超過(guò) 5h 的進(jìn)程,那么可以使用 -o 選項(xiàng),其中 o 代表 older 如下: 

  1. killall -o 5h 

同樣地,如果你想殺死進(jìn)行時(shí)間小于 4h 的進(jìn)程,那么可以使用 -y 選項(xiàng),其中 y 代表 younger ,如下: 

  1. killall -y 4h 

這兩個(gè)選項(xiàng)同樣非常粗暴,也會(huì)把終端退出,所以先不演示了。

4、忽略大小寫(xiě)

默認(rèn)情況下,killall 命令是大小寫(xiě)敏感的,所以我們?nèi)绻麑?xiě)錯(cuò)大小寫(xiě),將無(wú)法正確殺死進(jìn)程。 

  1. [alvin@VM_0_16_centos test]$ killall HELLO1  
  2. TEST1: no process found 

如果我們想忽略大小寫(xiě),可以加上 -I (大寫(xiě)字母 i )選項(xiàng)。 

  1. [alvin@VM_0_16_centos test]$ killall -I HELLO1  
  2. [1]   Terminated              ./hello1 

5、關(guān)閉命令執(zhí)行回顯

默認(rèn)情況下,killall 會(huì)告訴你命令執(zhí)行情況,但是,我們?nèi)绻魂P(guān)心它的執(zhí)行結(jié)果,只想讓它靜默執(zhí)行,該怎么辦?只需加上 -q 選項(xiàng)即可,其中 q 表示 quite , 如下: 

  1. [alvin@VM_0_16_centos test]$ killall HELLO2  
  2. HELLO2: no process found  
  3. [alvin@VM_0_16_centos test]$ killall -q HELLO2  
  4. [alvin@VM_0_16_centos test]$ 

6、列出所有支持的信號(hào)

如前文所述,默認(rèn)情況下,killall 命令將發(fā)送 SIGTERM 信號(hào),那么,安可以發(fā)送其它信號(hào)嗎?當(dāng)然是可以的??梢允褂?-l 選項(xiàng)查看 killall 所支持的所有信號(hào): 

  1. [alvin@VM_0_16_centos test]$ killall -l  
  2. HUP INT QUIT ILL TRAP ABRT IOT BUS FPE KILL USR1 SEGV USR2 PIPE ALRM TERM  
  3. STKFLT CHLD CONT STOP TSTP TTIN TTOU URG XCPU XFSZ VTALRM PROF WINCH IO PWR SYS  
  4. UNUSED 

你可以使用 -s 選項(xiàng)(后面跟一個(gè)信號(hào)名)來(lái)向一個(gè)進(jìn)程發(fā)送特殊信號(hào)。

7、交互式操作

如果你在殺死多個(gè)進(jìn)程時(shí)不太放心,擔(dān)心把不該殺死的進(jìn)程給殺死了,那么你可以使用 -i 選項(xiàng),這樣就可以自由決定哪些進(jìn)程應(yīng)該被殺死,哪些進(jìn)程應(yīng)該被保留。 

  1. [alvin@VM_0_16_centos test]$ killall -i hello*  
  2. Kill hello2(13825) ? (y/N) y  
  3. Kill hello3(13831) ? (y/N) N  
  4. hello: no process found  
  5. hello1: no process found  
  6. hello3: no process found  
  7. hello.c: no process found  
  8. [2]-  Terminated              ./hello2 

8、等待直到某個(gè)進(jìn)程被終止

當(dāng)一個(gè)信號(hào)被發(fā)送至某個(gè)進(jìn)程,如果你想確定該進(jìn)程已經(jīng)被殺死了才返回執(zhí)行結(jié)果,可以使用 -w 選項(xiàng),其中 w 代表 wait ,如下: 

  1. [alvin@VM_0_16_centos test]$ killall -w hello1  
  2. [4]+  Terminated              ./hello1 

這里好像看不出什么效果,但實(shí)際執(zhí)行的時(shí)候,可以發(fā)現(xiàn)執(zhí)行結(jié)果會(huì)在一兩秒后出現(xiàn),而不加 -w 選項(xiàng)的話,執(zhí)行結(jié)果馬上就顯示。 

責(zé)任編輯:龐桂玉 來(lái)源: Linux學(xué)習(xí)
相關(guān)推薦

2021-03-19 09:30:22

Linuxkill命令 管理進(jìn)程

2009-05-26 12:14:59

Linuxkill終止命令

2010-05-24 14:57:10

SVN子命令

2020-09-13 09:22:51

Linuxls命令

2024-04-24 14:43:40

Linux命令

2010-06-04 14:31:59

Linux 查看進(jìn)程

2010-06-13 15:13:45

Linux 查看進(jìn)程

2020-07-09 08:09:21

Linuxdiff命令

2020-08-16 20:42:52

more命令文件Linux

2010-06-13 15:17:16

Linux 查看進(jìn)程

2010-06-04 15:16:36

Linux 查看進(jìn)程

2021-08-14 22:29:42

Backstab進(jìn)程安全工具

2017-08-15 17:09:31

Linux命令

2010-01-22 10:51:54

svn命令linux

2009-12-03 10:07:55

Linuxman命令使用技巧

2014-05-06 10:31:21

KillallLinux命令行

2010-08-17 10:31:10

DIV布局屬性

2009-08-03 12:21:03

linux at命令linux at命令詳定時(shí)關(guān)機(jī)

2017-07-13 12:43:41

Linux命令date

2014-08-01 15:38:37

Linux進(jìn)程管理
點(diǎn)贊
收藏

51CTO技術(shù)棧公眾號(hào)