服务器之家:专注于VPS、云服务器配置技术及软件下载分享
分类导航

Linux|Centos|Ubuntu|系统进程|Fedora|注册表|Bios|Solaris|Windows7|Windows10|Windows11|windows server|

服务器之家 - 服务器系统 - Linux - Linux下使用killall命令终止进程的8大用法实例详解

Linux下使用killall命令终止进程的8大用法实例详解

2022-09-02 10:53Magesh Maruthamuthu Linux

Linux 的命令行提供很多命令来杀死进程。这篇文章主要介绍了Linux下使用killall命令终止进程的8大用法,需要的朋友可以参考下

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

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

默认情况下,killall 命令将向一个/组进程发送一个 SIGTERM 信号,但是,也可以通过参数发送一个指定的信号。

下面我们通过例子详细介绍 killall 的 8 大用法。

1、基本用法

假如我们 3 个进程在运行,分别是 hello1, hello2, hello3 ,现在我们想杀死 hello1 进程,可以直接使用如下方式:

killall hello1

运行的结果如下:

?
1
2
3
4
5
6
7
8
9
10
11
[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 进程,我们想一次性杀死他们,也就是批量杀死进程,可以如下操作:

?
1
2
3
4
5
6
[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 现在运行如下几个进程:

?
1
2
3
4
5
6
7
8
9
10
11
[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

运行结果如下:

?
1
2
3
[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 命令是大小写敏感的,所以我们如果写错大小写,将无法正确杀死进程。

?
1
2
[alvin@VM_0_16_centos test]$ killall HELLO1
TEST1: no process found

如果我们想忽略大小写,可以加上 -I (大写字母 i )选项。

?
1
2
[alvin@VM_0_16_centos test]$ killall -I HELLO1
[1]  Terminated       ./hello1

5、关闭命令执行回显

默认情况下,killall 会告诉你命令执行情况,但是,我们如果不关心它的执行结果,只想让它静默执行,该怎么办?只需加上 -q 选项即可,其中 q 表示 quite , 如下:

?
1
2
3
4
[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 所支持的所有信号:

?
1
2
3
4
[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 选项,这样就可以自由决定哪些进程应该被杀死,哪些进程应该被保留。

?
1
2
3
4
5
6
7
8
[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 ,如下:

?
1
2
[alvin@VM_0_16_centos test]$ killall -w hello1
[4]+ Terminated       ./hello1

这里好像看不出什么效果,但实际执行的时候,可以发现执行结果会在一两秒后出现,而不加 -w 选项的话,执行结果马上就显示。

总结

以上所述是小编给大家介绍的Linux下使用killall命令终止进程的8大用法实例详解,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对服务器之家网站的支持!
如果你觉得本文对你有帮助,欢迎转载,烦请注明出处,谢谢!

原文链接:http://os.51cto.com/art/201904/595437.htm

延伸 · 阅读

精彩推荐
  • Linux5款最佳的免费Linux杀毒软件

    5款最佳的免费Linux杀毒软件

    Linux的安全性毋庸置疑。很多Linux新手都这样认为,但是Linux同样也有可能遭受病毒的侵袭。这篇文章主要介绍了5款最佳的免费Linux杀毒软件,需要的朋友可以...

    Linux教程网22662021-10-14
  • Linuxlinux系统不同对象升级方法详细介绍

    linux系统不同对象升级方法详细介绍

    在Linux环境下,升级的对象可以是一般的软件,可以是编译器,也可以是系统的内核,甚至是系统本身。下文就分别讲讲对不同对象的升级方法,需要的朋...

    服务器之家3452019-07-16
  • Linuxlinux backtrak无线配置教程

    linux backtrak无线配置教程

    俺用backtrack不是为了破解,就是因为看到它有一句话说的很多the quieter you become, the more you are able to hear. 想要了解更多,可以参考本文 ...

    Linux教程网3532019-12-13
  • Linuxlinux find命令查找比某个文件新或旧的文件

    linux find命令查找比某个文件新或旧的文件

    find命令查找比某个文件新或旧的文件,有需要的朋友可以参考下 ...

    Linux命令大全6742019-12-10
  • LinuxLinux配置实现免密钥登录过程解析

    Linux配置实现免密钥登录过程解析

    这篇文章主要介绍了Linux配置实现免密钥登录过程解析,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以...

    Zs夏至3352020-06-15
  • LinuxLinux内核设备驱动地址映射笔记整理

    Linux内核设备驱动地址映射笔记整理

    今天小编就为大家分享一篇关于Linux内核设备驱动地址映射笔记整理,小编觉得内容挺不错的,现在分享给大家,具有很好的参考价值,需要的朋友一起跟...

    Engineer-Bruce_Yang7712022-08-09
  • Linux用 Curtail GUI 应用轻松压缩 Linux 中的图像

    用 Curtail GUI 应用轻松压缩 Linux 中的图像

    你可以使用一个成熟的图像编辑器,如 GIMP。你也可以使用像 Squoosh 这样的网络工具,这是谷歌的一个开源项目。它甚至可以让你比较每个压缩级别的文件...

    Linux中国4412022-06-24
  • LinuxLinux使用 sed 命令进行复制、剪切和粘贴

    Linux使用 sed 命令进行复制、剪切和粘贴

    了解 sed 的基本用法,然后下载我们的备忘单,方便快速地参考 Linux 流编辑器。本文就来讲讲Linux使用 sed 命令进行复制、剪切和粘贴的方法....

    Linux中国10552021-05-24