千家信息网

Linux中怎么使用killall命令终止进程

发表于:2025-12-04 作者:千家信息网编辑
千家信息网最后更新 2025年12月04日,Linux中怎么使用killall命令终止进程,针对这个问题,这篇文章详细介绍了相对应的分析和解答,希望可以帮助更多想解决这个问题的小伙伴找到更简单易行的方法。1、基本用法假如我们 3 个进程在运行,
千家信息网最后更新 2025年12月04日Linux中怎么使用killall命令终止进程

Linux中怎么使用killall命令终止进程,针对这个问题,这篇文章详细介绍了相对应的分析和解答,希望可以帮助更多想解决这个问题的小伙伴找到更简单易行的方法。

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

关于Linux中怎么使用killall命令终止进程问题的解答就分享到这里了,希望以上内容可以对大家有一定的帮助,如果你还有很多疑惑没有解开,可以关注行业资讯频道了解更多相关知识。

进程 运行 信号 命令 用户 大小 情况 结果 代表 方式 问题 时间 更多 终端 帮助 支持 解答 易行 特殊 粗暴 数据库的安全要保护哪些东西 数据库安全各自的含义是什么 生产安全数据库录入 数据库的安全性及管理 数据库安全策略包含哪些 海淀数据库安全审计系统 建立农村房屋安全信息数据库 易用的数据库客户端支持安全管理 连接数据库失败ssl安全错误 数据库的锁怎样保障安全 软件开发中心离职率高吗 access数据库单列求和 上海运营软件开发代理品牌 计算机如何编写数据库 网络安全教育小知识手抄报 北京速得设计互联网科技有限公司 征信网络安全自查报告 最简单的网络安全4句小古诗 新乡坦克互联网科技 广州贵仁网络技术有限公司 数据库中数据的正确性又叫什么 长春java软件开发培训费用 台湾服务器公司云主机 广州市天气预报软件开发 数据库应用系统开发流程 二年级小学生网络安全教育手抄报 网络技术在智能城市应用 闪耀暖暖官服有几个服务器 服务器机柜如何走线 其他入库单对应的数据库表 武汉有没有英雄联盟的服务器 计算机如何编写数据库 衡入式软件开发工程师待遇 数据库的第二块飞机怎么叠 襄阳市网络安全周2017 微梦创新网络技术有限公司 测试数据库运行时间 网络编程属于网络技术吗 数据库什么是序列 怎么找软件开发公司电话
0