killall 后面信号_Linux 下使用 killall 命令终止进程的 8 大用法

7a36242b450125c06437c355c89dd4c1.png

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 选项的话,执行结果马上就显示。

码字不易,如果您觉得有帮助,麻烦点个赞再走呗~

-----------------

微信搜索公众号【良许Linux】,后台回复关键字:

  1. 回复【1024】:免费获取不断更新的海量技术资源;
  2. 回复【CSDN】:免费进入CSDN资源下载群;
  3. 回复【进群】:免费进入高手如云技术交流群。

干货分享 · 资源共享 · 认知提高 · 英语学习

5071334016a1da28d05216d1ac7c1793.png

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/356953.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

分享一些我的远程办公经验

前言 大家好,我叫孙叫兽,本期内容给大家分享一群在内网操作的程序员远程办公经验。为啥说是内网呢,因为从事的开发项目比较保密,比如某银行总行的新一代智能柜台项目。这些平时开发的内容不能直接和互联网进行连接。只能通过行方的…

SqlServer按中文数字排序

表数据: 按名称排序 并不能得到一二三四五六的顺序 select * from LiWei order by name 找到中文数字在一二三四五六七八九十的位置 select id,name,SUBSTRING(name,2,1) as 中文数字,charindex(SUBSTRING(name,2,1),一二三四五六七八九十) as 中文数字所在位置 from LiWei 按中…

C语言--直接插入排序【排序算法|图文详解】

一.直接插入排序介绍🍗 直接插入排序又叫简单插入排序,是一种简单直观的排序算法,它通过构建有序序列,对于未排序的数据,在已排序序列中从后向前扫描,找到相应位置并插入。 算法描述: 假设要排序…

python 读取sqlite存入文件_如何通过python读取sqlite数据文件

sqlite简介:sqlite是一个进程内的库,实现了自给自足的、无服务器的、零配置的、事务性的 SQL 数据库引擎。它的设计目标是嵌入式的,而且目前已经在很多嵌入式产品中使用了它(如安卓系统),它占用资源非常的低,在嵌入式设…

分享一些前端优质的掘金小册,学完技术感觉已经超神了

大家好,本期内容给大家推荐一些优质的前端掘金小册,基本每个都是专栏小册的形式,比较适合初学者及工作几年的前端小伙伴,里面的内容讲解的比较详细,作者也是一线的大厂工作者。有兴趣的小伙伴快来打卡看一下吧&#xf…

sp烘焙流程_次世代86机甲战神制作全流程

1介绍Hello,大家好!我叫周玉亮。首先感谢一下小左老师对我的作品的认可,以及给予我这次宝贵的分享机会。本次分享的是我的第一个次世代硬表面作品,名为《86机甲战神》,制作时间3周。时间还是相当紧的,要在3…

esper_Twitter4j和Esper:在Twitter上跟踪用户情绪

esper对于复杂事件处理和Twitter API的新手,我希望这是一个简短的教程,可以帮助他们Swift起步。 管理大数据并从中挖掘有用的信息是当前技术中最热门的讨论主题。 来自Twitter,Facebook和Linkedin等社交网络的半结构化数据的爆炸式增长使Hado…

前端实现流星雨特效

目录 前言 效果图&#xff1a; HTML CSS 完整代码 前言 使用htmlcss实现简单得浏览器特效&#xff0c;在编译器用导入项目&#xff0c;直接在浏览器打开即可&#xff0c;效果十分得炫酷&#xff0c;十分得哇塞&#xff0c;女朋友直呼NB! 效果图&#xff1a; HTML <!DO…

elementui中tabs切换item中的内容会变_中后台UX优化之道

前言“前台重体验&#xff0c;后台重逻辑”&#xff0c;B端谈 UX 有没有价值&#xff1f;一切电子化的今天&#xff0c;运营、审核、电销、账务……无数岗位依赖中后台系统来完成他们的日常工作&#xff0c;好的 UX 确实可以直接为这些产能提效当中后台的工程师们花费了巨大精力…

介体设计模式示例

本文是我们名为“ Java设计模式 ”的学院课程的一部分。 在本课程中&#xff0c;您将深入研究大量的设计模式&#xff0c;并了解如何在Java中实现和利用它们。 您将了解模式如此重要的原因&#xff0c;并了解何时以及如何应用模式中的每一个。 在这里查看 &#xff01; 目录 …

jvm需要多长时间才能进行转义分析? 可能比您想象的要长。

这篇文章着眼于转义分析&#xff0c;特别是jvm在运行的程序中执行转义分析需要多长时间。 我做了一些观察&#xff0c;但目前还没有全部解释。 作为介绍&#xff0c;让我们绕道看看jvm -Xcomp中一个鲜为人知且使用更少的标志&#xff08;这将是一件好事&#xff09;。 该标志…

Linux常用操作指令整理,这个操作服务器实在是太方便了

目录 前言 常用指令 系统管理命令 打包压缩相关命令 关机/重启机器 Linux管道 Linux软件包管理 vim使用 用户及用户组管理 更改文件的用户及用户组 文件权限管理 更改权限 前言 由于在银行工作&#xff0c;一个项目需要在云桌面、SIT、UAT、小版本、联调环境、准生产…

http invoker_Http Invoker的Spring Remoting支持

http invokerSpring HTTP Invoker是Java到Java远程处理的重要解决方案。 该技术使用标准的Java序列化机制通过HTTP公开服务&#xff0c;并且可以看作是替代方法&#xff0c;而不是Hessian和Burlap中的自定义序列化。 而且&#xff0c;它仅由Spring提供&#xff0c;因此客户端和…

前端实现数字快速递增_天正CAD教程之递增文字应用实例

好课推荐&#xff1a;1、CAD2014&#xff1a;点击查看 2、室内&全屋&#xff1a;点击查看 3、CAD2019&#xff1a;点击查看4、CAD2018&#xff1a;点击查看5、Bim教程&#xff1a;点击查看 6、室内手绘&#xff1a;点击查看7、CAD三维&#xff1a;点击查看8、全屋定制&…

模板设计模式示例

本文是我们名为“ Java设计模式 ”的学院课程的一部分。 在本课程中&#xff0c;您将深入研究大量的设计模式&#xff0c;并了解如何在Java中实现和利用它们。 您将了解模式如此重要的原因&#xff0c;并了解何时以及如何应用模式中的每一个。 在这里查看 &#xff01; 目录 …

账号被暂时禁用使用VScode不能上传代码的解决办法

最近项目在开发的过程中突然不能提交代码&#xff0c;然后使用git账号登录gitee&#xff0c;发现账号账号不能登录了&#xff0c;不知道什么原因导致的禁用&#xff0c;这个账号sunjiaoshou01是被行方同步数据导致的禁用&#xff0c;一问管理员就说是可能一个月没登录会自动封禁…

地图库地之图地图窝_「方舆」秦朝地图及行政区划

秦朝是中国历史上一个极为重要的朝代&#xff0c;由战国时期的秦国发展起来的统一大国&#xff0c;它结束了自春秋起五百年来分裂割据的局面&#xff0c;成为中国历史上第一个大一统的中央集权制国家。秦朝统一六国时&#xff0c;国土面积为214万平方公里&#xff0c;后北收河套…

智能柜台C端代码规范

语法上建议&#xff1a;一、建议尽量使用””代替””上述比较好上述HX0188是一个字符串&#xff0c;用!替代比较好二、引用的组件/插件在当前vue文件内并未使用例&#xff1a;chk_bcip\src\business\common\views\ common-auditwait.vueDevice._$和Utils.AppUtils 都未使用&am…

华为云电脑和马云无影比_阿里云打造未来电脑无影,却因为5G限制,很难达到普及...

在9月17日&#xff0c;在2020阿里巴巴云栖大会上&#xff0c;阿里云发布了第一台云电脑"无影"&#xff0c;极致的简约&#xff0c;一张卡片大小的机器就等于一台电脑了。看到这款电脑的宣传片&#xff0c;真的是极致的未来感&#xff0c;随随便便一块小透明玻璃就是电…

SQL SERVER 2016研究三

2016 SQL SEVER 全程加密程式 column encryption settingEnabled; 重点&#xff1a;需要使用.Net Framework 4.6 新建一个程式如下&#xff1a; 1、创建链接数据库&#xff0c;必选栏位&#xff0c;影响加密。 2、或者在web.config文件数据链接字符串增加如下语句&#xff1a; …