killall命令的实际应用

killall命令的实际应用

Linux的命令行提供很多命令来杀死进程。比如,你可以向“kill”命传递一个PID来杀死进程;“pkill”命令使用一个正则表达式作为输入,所以和该模式匹配的进程都被杀死。

但是还有一个命令叫“killall”,默认情况下,它精确地匹配参数名,然后杀死匹配进程。在这篇文章中,我们将讨论有关这个命令的实际应用。

Linux 的 killall 命令

Killall命令可以用来给一个特定的进程发送一个信号。这个信号默认情况下是SIGTERM,但也可以由killall命令使用参数来指定其它信号。

现在让我们通过一些实际的例子来看看这个命令的实际用法。

1. 基本示例

在这个例子中,我们将使用killall来杀死特定进程。假如,有两个开头字符相同的进程:

   
   
  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”进程呢?

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

如你所见,killall命令终止了“test_again”进程。你可以通过ps命令来确认这个事实:

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

你可以观察到“test_again”没有被显示出来,因为它已经被杀死了。

2. 使用 -I 选项忽略大小写

默认情况下,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”的进程,但是“test”进程是确确实实的在运行的。

来让killall命令忽略大小写,可以使用-I选项(大写i)。例如:

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

你可以观察到,现在你成功的终止了“test”进程。

3. 使用 -i 选项交互式的终止进程

killall命令可以用来终止多个进程。

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

但是,如果你想要killall交互式地来终止进程,你可以使用-i选项。

这里是例子:

   
   
  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 

你可以看到,用这种方式,在同时终止多个进程时,用户可以控制是否终止某一个进程。

4. 使用 -q 选项关闭命令执行回显

有些时候,当killall找不到指定的进程时,它就会像下面这样输出错误信息。

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

但是,当你想要killall执行地安安静静的话,你就可以使用-q选项:

   
   
  1. $ killall -q TEST 

如你所见,-q选项被使用之后,killall命令的输出信息就被抑制了。

5. 使用-l选项列出所有支持的信号(signal)

如之前描述的一样,killall向进程发送信号。

你可以使用-s选项(后面跟一个信号名)来向一个进程发送特殊信号。

想要知道所有可以发送的信号,可以使用-l选项(小写L)来获取:

   
   
  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支持上面的所有信号。

看着这些信号的名字,可能你心里就会嘀咕:这些信号都是干什么的?

译者注:使用下面的命令来获取所有信号的说明:

   
   
  1. $ man 7 signal 
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值