根据名字杀死进程Killall
Killall命令可以用来给一个特定的进程发送一个信号。这个信号默认情况下是SIGTERM,但也可以由killall命令使用参数来指定其它信号。现在让我们通过一些实际的例子来看看这个命令的实际用法。
Linux的命令行提供很多命令来杀死进程。比如,你可以向“kill”命传递一个PID来杀死进程;“pkill”命令使用一个正则表达式作为输入,所以和该模式匹配的进程都被杀死。
但是还有一个命令叫“killall”,默认情况下,它精确地匹配参数名,然后杀死匹配进程。在这篇文章中,我们将讨论有关这个命令的实际应用。
Linux 的 killall 命令
Killall命令可以用来给一个特定的进程发送一个信号。这个信号默认情况下是SIGTERM,但也可以由killall命令使用参数来指定其它信号。
现在让我们通过一些实际的例子来看看这个命令的实际用法。
1. 基本示例
在这个例子中,我们将使用killall来杀死特定进程。假如,有两个开头字符相同的进程:
- $ ps -aef | grep “test”
- himanshu 3969 2811 0 14:14 pts/0 00:00:00 ./test
- himanshu 3970 2811 0 14:14 pts/0 00:00:00 ./test_again
如何杀死“test_again”进程呢?
- $ killall test_again
- [2]+ Terminated ./test_again
如你所见,killall命令终止了“test_again”进程。你可以通过ps命令来确认这个事实:
- $ ps -aef | grep “test”
- himanshu 3969 2811 0 14:14 pts/0 00:00:00 ./test
你可以观察到“test_again”没有被显示出来,因为它已经被杀死了。
2. 使用 -I 选项忽略大小写
默认情况下,killall命令是大小写敏感的。例如:
- $ ps -aef | grep “test”
- himanshu 4177 3161 0 14:54 pts/3 00:00:00 ./test
- himanshu 4178 3161 0 14:54 pts/3 00:00:00 ./test_again
- himanshu 4180 3161 0 14:54 pts/3 00:00:00 grep --color=auto test
- $ killall TEST
- TEST: no process found
你可以看到,killall命令找不到叫做“TEST”的进程,但是“test”进程是确确实实的在运行的。
来让killall命令忽略大小写,可以使用-I选项(大写i)。例如:
- $ killall -I TEST
- [1]- Terminated ./test
你可以观察到,现在你成功的终止了“test”进程。
3. 使用 -i 选项交互式的终止进程
killall命令可以用来终止多个进程。
- $ killall test test_again
- [2]- Terminated ./test_again
- [3]+ Terminated ./test
但是,如果你想要killall交互式地来终止进程,你可以使用-i选项。
这里是例子:
- $ killall -i test test_again
- Kill test(4201) ? (y/N) y
- Kill test_again(4202) ? (y/N) y
- [1]- Terminated ./test
- [2]+ Terminated ./test_again
你可以看到,用这种方式,在同时终止多个进程时,用户可以控制是否终止某一个进程。
4. 使用 -q 选项关闭命令执行回显
有些时候,当killall找不到指定的进程时,它就会像下面这样输出错误信息。
- $ killall TEST
- TEST: no process found
但是,当你想要killall执行地安安静静的话,你就可以使用-q选项:
- $ killall -q TEST
- $
如你所见,-q选项被使用之后,killall命令的输出信息就被抑制了。
5. 使用-l选项列出所有支持的信号(signal)
如之前描述的一样,killall向进程发送信号。
你可以使用-s选项(后面跟一个信号名)来向一个进程发送特殊信号。
想要知道所有可以发送的信号,可以使用-l选项(小写L)来获取:
- $ 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
killall支持上面的所有信号。
看着这些信号的名字,可能你心里就会嘀咕:这些信号都是干什么的?
译者注:使用下面的命令来获取所有信号的说明:
- $ man 7 signal
我需要和大家讨论一件事情
killall命令的man说:假如进程的名字的长度小于等于15,默认情况下就会以完整名称匹配。
比如,假设有两个名字很长的进程:
- $ ps -aef | grep “test”
- himanshu 4021 3161 0 14:27 pts/3 00:00:00 ./test_abcdefghij
- himanshu 4035 3161 0 14:27 pts/3 00:00:00 ./test_abcdefgh
第一个进程的名字有15个字符。现在,让我们试着使用killall杀死这个进程:
- $ killall test_abcdefghij
- [1]- Terminated ./test_abcdefghij
如你所见,killall命令成功杀死了这个进程。
假如,两个进程的名字都超过15个字符,根据man,killall将把两个进程全部杀死。比如:
- $ ps -aef | grep “test”
- himanshu 4114 3161 0 14:40 pts/3 00:00:00 ./test_abcdefghijklmnopqrstuvwx
- himanshu 4141 3161 0 14:46 pts/3 00:00:00 ./test_abcdefghijklmnopqrstuvwxyz
- himanshu 4143 3161 0 14:46 pts/3 00:00:00 grep --color=auto test
你可以观察到,两个进程的名字都超过15个字符。现在,当我使用killall试着杀死第二个进程时:
- $ killall test_abcdefghijklmnopqrstuvwxyz
- [6]+ Terminated ./test_abcdefghijklmnopqrstuvwxyz
它只杀死了指定的进程,另一个则没有被杀死。
- $ ps -aef | grep “test”
- himanshu 4114 3161 0 14:40 pts/3 00:00:00 ./test_abcdefghijklmnopqrstuvwx
- himanshu 4146 3161 0 14:47 pts/3 00:00:00 grep --color=auto test
我不太确定,是我进行的尝试中有不对的地方,还是这是killall的一个bug。假如你在评论中写上你的观点,我会非常感激。
顺便说一下,这是我机器上killall命令的版本信息:
- $ killall --version
- killall (PSmisc) 22.20
- Copyright (C) 1993-2012 Werner Almesberger and Craig Small
- PSmisc comes with ABSOLUTELY NO WARRANTY.
- This is free software, and you are welcome to redistribute it under
- the terms of the GNU General Public License.
- For more information about these matters, see the files named COPYING.
via: http://linoxide.com/linux-command/linux-killall-my-options/
译者:intermerlin 校对:wxy
根据名字杀死进程Killall的更多相关文章
- Linux基础命令---杀死进程killall
killall killall可以根据名字来杀死进程,它会给指定名字的所有进程发送信息.如果没有指定信号名,则发送SIGTERM.信号可以通过名称(例如-HUP或-SIGHUP)或数字(例如-1)或选 ...
- Linux下根据进程的名字杀死进程
以前是写了一个bash,通过ps,grep 和awk配合搜索PID再kill掉进程.果然以前傻,不知道解决问题之前先google,原来直接就有相关的pkill -f "process_nam ...
- linux根据进程名字杀死进程
ps -ef | grep procedure_name | grep -v grep | awk '{print $2}' | xargs kill -9 Linux Shell脚本实现根据进程名杀 ...
- linux的PS进程和作业管理(进程调度,杀死进程和进程故障-僵尸进程-内存泄漏)
Ps进程和作业管理 1.查看进程ps 1.格式 ps ---查看当前终端下的进程 3种格式: SYSV格式 带 - 符号 BSD格式 不带 - 符号 GNU格式 长选项 2.ps -a ...
- killall - 以名字方式来杀死进程
SYNOPSIS (总览) killall [-egiqvw] [-signal] name ... killall -l killall -V DESCRIPTION (描述) killall 发送 ...
- Linux 杀死进程方法大全(kill,killall)
杀死进程最安全的方法是单纯使用kill命令,不加修饰符,不带标志. 首先使用ps -ef命令确定要杀死进程的PID,然后输入以下命令: # kill -pid 注释:标准的kill命令通常 ...
- Linux如何查看进程、杀死进程、启动进程等常用命令
Linux如何查看进程.杀死进程.启动进程等常用命令 关键字: linux 查进程.杀进程.起进程1.查进程 ps命令查找与进程相关的PID号: ps a 显示现行终端机下的所有程序,包括 ...
- centos(linux) 下如何查看端口占用情况及杀死进程
使用这个命令:netstat -nap [root@Jaosn sphinx]# netstat -nap Active Internet connections (servers and estab ...
- Linux中查看进程及杀死进程命令
Linux中想杀死fcitx进程,然后再重启它. root@www.linuxidc.com:/home/zhangbin# ps -e | grep 'fcitx' 3405 ? 00 ...
随机推荐
- [HNOI2014]江南乐 博弈论
题面 题面 题解 首先我们知道一个关于除法的重要性质:对于一个固定的\(i\),表达式\(\frac{i}{m}\)的取值只有根号个. 因此我们考虑如何优化SG函数的求解. 观察到在取值相同的同一段中 ...
- 洛谷P1268 树的重量 【构造 + 枚举】
题目描述 树可以用来表示物种之间的进化关系.一棵"进化树"是一个带边权的树,其叶节点表示一个物种,两个叶节点之间的距离表示两个物种的差异.现在,一个重要的问题是,根据物种之间的距离 ...
- 国内外三个领域巨头告诉你Redis怎么用
随着数据体积的激增,MySQL+memcache已经满足不了大型互联网类应用的需求,许多机构也纷纷选择Redis作为其架构上的补充.这里我们将为大家分享社交巨头新浪微博.传媒巨头Viacom及图片分享 ...
- NOIP2015Day1T3斗地主(DFS)
这类题...真的写不动T T 首先可以发现没有顺子的话出牌次数是一定的, 换句话说只有顺子会影响出牌次数. 所以可以暴搜出所有顺子的方案, 搜完之后记忆化搜索求一下a张1张同色牌, b张2张同色牌,c ...
- [IOI2013]Dreaming
link 一道非常类似的题目(link) 试题大意 给你一棵含有$n$个节点的有边权森林,问每次连边将会用$L$的代价,问你若此图通过加边成为树时的最小直径.$n \leq 5\times 10^5$ ...
- [转]从头开始 GAN
1 前言 GAN的火爆想必大家都很清楚了,各种GAN像雨后春笋一样冒出来,大家也都可以名正言顺的说脏话了[微笑脸].虽然目前GAN的酷炫应用还集中在图像生成上,但是GAN也已经拓展到NLP,Robot ...
- 洛谷P2617 Dynamic Rankings (主席树)
洛谷P2617 Dynamic Rankings 题目描述 给定一个含有n个数的序列a[1],a[2],a[3]--a[n],程序必须回答这样的询问:对于给定的i,j,k,在a[i],a[i+1],a ...
- linux 查看登录日志
原文:http://www.cnblogs.com/wangkangluo1/archive/2011/09/23/2185976.html linux查看日志: # cd /var/log # le ...
- [LeetCode] 27. Remove Element ☆
Given an array and a value, remove all instances of that value in place and return the new length. D ...
- Java 8 Stream 用法
一.Stream是什么 Stream 不是集合元素,它不是数据结构并不保存数据,它是有关算法和计算的,它更像一个高级版本的 Iterator.原始版本的 Iterator,用户只能显式地一个一个遍历元 ...