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

五個(gè)你可能不了解的Killall命令的實(shí)際應(yīng)用

系統(tǒng) Linux
Killall命令可以用來給一個(gè)特定的進(jìn)程發(fā)送一個(gè)信號。這個(gè)信號默認(rèn)情況下是SIGTERM,但也可以由killall命令使用參數(shù)來指定其它信號?,F(xiàn)在讓我們通過一些實(shí)際的例子來看看這個(gè)命令的實(shí)際用法。

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

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

 

[[112518]]

Linux 的 killall 命令

Killall命令可以用來給一個(gè)特定的進(jìn)程發(fā)送一個(gè)信號。這個(gè)信號默認(rèn)情況下是SIGTERM,但也可以由killall命令使用參數(shù)來指定其它信號。

現(xiàn)在讓我們通過一些實(shí)際的例子來看看這個(gè)命令的實(shí)際用法。

1. 基本示例

在這個(gè)例子中,我們將使用killall來殺死特定進(jìn)程。假如,有兩個(gè)開頭字符相同的進(jìn)程:

  1. $ ps -aef | grep “test” 
  2. himanshu 3969 2811 0 14:14 pts/0 00:00:00 ./test 
  3. himanshu 3970 2811 0 14:14 pts/0 00:00:00 ./test_again 

如何殺死“test_again”進(jìn)程呢?

  1. $ killall test_again 
  2. [2]+ Terminated ./test_again 

如你所見,killall命令終止了“test_again”進(jìn)程。你可以通過ps命令來確認(rèn)這個(gè)事實(shí):

  1. $ ps -aef | grep “test” 
  2. himanshu 3969 2811 0 14:14 pts/0 00:00:00 ./test 

你可以觀察到“test_again”沒有被顯示出來,因?yàn)樗呀?jīng)被殺死了。

2. 使用 -I 選項(xiàng)忽略大小寫

默認(rèn)情況下,killall命令是大小寫敏感的。例如:

  1. $ ps -aef | grep “test” 
  2. himanshu 4177 3161 0 14:54 pts/3 00:00:00 ./test 
  3. himanshu 4178 3161 0 14:54 pts/3 00:00:00 ./test_again 
  4. himanshu 4180 3161 0 14:54 pts/3 00:00:00 grep --color=auto test 
  5. $ killall TEST 
  6. TEST: no process found 

你可以看到,killall命令找不到叫做“TEST”的進(jìn)程,但是“test”進(jìn)程是確確實(shí)實(shí)的在運(yùn)行的。

來讓killall命令忽略大小寫,可以使用-I選項(xiàng)(大寫i)。例如:

  1. $ killall -I TEST 
  2. [1]- Terminated ./test 

你可以觀察到,現(xiàn)在你成功的終止了“test”進(jìn)程。

3. 使用 -i 選項(xiàng)交互式的終止進(jìn)程

killall命令可以用來終止多個(gè)進(jìn)程。

  1. $ killall test test_again 
  2. [2]- Terminated ./test_again 
  3. [3]+ Terminated ./test 

但是,如果你想要killall交互式地來終止進(jìn)程,你可以使用-i選項(xiàng)。

這里是例子:

  1. $ killall -i test test_again 
  2. Kill test(4201) ? (y/N) y 
  3. Kill test_again(4202) ? (y/N) y 
  4. [1]- Terminated ./test 
  5. [2]+ Terminated ./test_again 

你可以看到,用這種方式,在同時(shí)終止多個(gè)進(jìn)程時(shí),用戶可以控制是否終止某一個(gè)進(jìn)程。

4. 使用 -q 選項(xiàng)關(guān)閉命令執(zhí)行回顯

有些時(shí)候,當(dāng)killall找不到指定的進(jìn)程時(shí),它就會(huì)像下面這樣輸出錯(cuò)誤信息。

  1. $ killall TEST 
  2. TEST: no process found 

但是,當(dāng)你想要killall執(zhí)行地安安靜靜的話,你就可以使用-q選項(xiàng):

  1. $ killall -q TEST 

如你所見,-q選項(xiàng)被使用之后,killall命令的輸出信息就被抑制了。

5. 使用-l選項(xiàng)列出所有支持的信號(signal)

如之前描述的一樣,killall向進(jìn)程發(fā)送信號。

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

想要知道所有可以發(fā)送的信號,可以使用-l選項(xiàng)(小寫L)來獲?。?/p>

  1. $ 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 

killall支持上面的所有信號。

看著這些信號的名字,可能你心里就會(huì)嘀咕:這些信號都是干什么的?

譯者注:使用下面的命令來獲取所有信號的說明:

  1. $ man 7 signal 

我需要和大家討論一件事情

killall命令的man說:假如進(jìn)程的名字的長度小于等于15,默認(rèn)情況下就會(huì)以完整名稱匹配。

比如,假設(shè)有兩個(gè)名字很長的進(jìn)程:

  1. $ ps -aef | grep “test” 
  2. himanshu 4021 3161 0 14:27 pts/3 00:00:00 ./test_abcdefghij 
  3. himanshu 4035 3161 0 14:27 pts/3 00:00:00 ./test_abcdefgh 

第一個(gè)進(jìn)程的名字有15個(gè)字符。現(xiàn)在,讓我們試著使用killall殺死這個(gè)進(jìn)程:

  1. $ killall test_abcdefghij 
  2. [1]- Terminated ./test_abcdefghij 

如你所見,killall命令成功殺死了這個(gè)進(jìn)程。

假如,兩個(gè)進(jìn)程的名字都超過15個(gè)字符,根據(jù)man,killall將把兩個(gè)進(jìn)程全部殺死。比如:

  1. $ ps -aef | grep “test” 
  2. himanshu 4114 3161 0 14:40 pts/3 00:00:00 ./test_abcdefghijklmnopqrstuvwx 
  3. himanshu 4141 3161 0 14:46 pts/3 00:00:00 ./test_abcdefghijklmnopqrstuvwxyz 
  4. himanshu 4143 3161 0 14:46 pts/3 00:00:00 grep --color=auto test 

你可以觀察到,兩個(gè)進(jìn)程的名字都超過15個(gè)字符?,F(xiàn)在,當(dāng)我使用killall試著殺死第二個(gè)進(jìn)程時(shí):

  1. $ killall test_abcdefghijklmnopqrstuvwxyz 
  2. [6]+ Terminated ./test_abcdefghijklmnopqrstuvwxyz 

它只殺死了指定的進(jìn)程,另一個(gè)則沒有被殺死。

  1. $ ps -aef | grep “test” 
  2. himanshu 4114 3161 0 14:40 pts/3 00:00:00 ./test_abcdefghijklmnopqrstuvwx 
  3. himanshu 4146 3161 0 14:47 pts/3 00:00:00 grep --color=auto test 

我不太確定,是我進(jìn)行的嘗試中有不對的地方,還是這是killall的一個(gè)bug。假如你在評論中寫上你的觀點(diǎn),我會(huì)非常感激。

順便說一下,這是我機(jī)器上killall命令的版本信息:

  1. $ killall --version 
  2. killall (PSmisc) 22.20 
  3. Copyright (C) 1993-2012 Werner Almesberger and Craig Small 
  4. PSmisc comes with ABSOLUTELY NO WARRANTY. 
  5. This is free software, and you are welcome to redistribute it under 
  6. the terms of the GNU General Public License. 
  7. For more information about these matters, see the files named COPYING. 

via: http://linoxide.com/linux-command/linux-killall-my-options/

譯者:intermerlin 校對:wxy

責(zé)任編輯:黃丹 來源: linux.cn
相關(guān)推薦

2019-04-03 09:10:35

Rediskey-value數(shù)據(jù)庫

2015-06-05 09:52:41

公有云風(fēng)險(xiǎn)成本

2023-02-16 07:38:38

非機(jī)械鍵電路薄膜,

2011-03-29 15:44:41

對日軟件外包

2024-01-15 13:18:11

數(shù)據(jù)管理CIO

2021-10-20 15:46:25

區(qū)塊鏈元宇宙金融

2019-11-21 15:08:13

DevOps云計(jì)算管理

2010-08-19 10:12:34

路由器標(biāo)準(zhǔn)

2021-07-12 07:01:39

AST前端abstract sy

2018-07-16 09:00:32

LinuxBash數(shù)組

2017-03-13 17:25:00

移動(dòng)支付技術(shù)支撐易寶

2013-11-11 10:07:43

靜態(tài)路由配置

2023-10-09 14:28:14

AIGC模型WOT2023

2019-05-14 14:51:40

Java語法糖用法

2009-09-04 11:06:06

Linux桌面Linux操作系統(tǒng)linux

2023-11-29 17:07:18

2022-04-30 19:22:35

Python編程語言

2018-04-16 23:14:39

SD-WANSDN網(wǎng)絡(luò)

2018-11-07 10:18:33

2021-01-14 08:31:54

Web開發(fā)應(yīng)用程序
點(diǎn)贊
收藏

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