8个使用kill命令终止Linux下的进程

发布者:上海IT外包来源:http://www.lanmon.net点击数:3361

Linux命令行提供了许多命令来终止进程。例如,你可以传递一个PID来杀死进程; pkill命令使用正则表达式作为输入,因此将终止与该模式匹配的进程。
但是还有一个名为killall的命令,默认情况下会严格匹配参数名称,然后终止匹配过程。在本文中,我们将讨论此命令的实际应用。
默认情况下,killall命令将SIGTERM信号发送到/group进程,但也可以通过参数发送特定信号。
下面我们用这些例子来详细介绍killall的八个主要用法。
1,基本用法
如果我们的3个进程正在运行,它们是hello1,hello2,hello3,现在我们要杀死hello1进程,你可以使用以下方式:
基拉尔你好1
操作结果如下:
[alvin @ VM_0_16_centos test] $ ps aux | grep你好
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]终止./hello1
[alvin @ VM_0_16_centos test] $ ps aux | grep你好
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测试] $ killall你好*
你好:没有找到进程
Hello1:没有找到进程
Hello.c:没有找到进程
[2]  - 终止./hello2
[3] +终止./hello3
这样,所有以hello开头的进程都被终止。
2,终止用户运行的进程
我们可以杀死一组满足正则表达式的进程。同样,我们可以杀死用户运行的所有进程。
例如,用户harry现在运行以下过程:
[alvin @ VM_0_16_centos test] $ ps aux | grep哈里
根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/1Root 13678 0.0 0.2 148236 5444? Ss 14: 55 0: 00 sshd: harry [priv]
哈利13680 0.0 0.1 148236 2252? S 14: 55 0: 00 sshd: harry @ notty
哈利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正在运行的所有进程,我们可以执行以下操作:
基拉尔 - 哈里
结果如下:
[alvin @ VM_0_16_centos测试] $ sudo killall -u harry
[alvin @ VM_0_16_centos test] $ ps aux | grep哈里
Alvin 14040 0.0 0.0 112648 964 pts/0 R + 14: 58 0: 00 grep --color=auto harry但是,应谨慎使用此选项,因为它会终止用户的所有进程,包括终端进程,并将导致用户直接退出。因此,如果您不想尴尬,请不要尝试此选项。
3,最后终止进程的方式
如果我们现在运行很多程序而且我们只想杀死运行时间超过5小时的进程,那么我们可以使用-o选项,其中o表示较旧的,如下所示:
基拉尔-o 5h
同样,如果要杀死时间少于4h的进程,可以使用-y选项,其中y代表较年轻,如下所示:
基拉尔 -  4小时
这两个选项也非常粗鲁,也会退出终端,所以不要先演示它。
4,忽略这种情况
默认情况下,killall命令区分大小写,因此如果我们写错了大小写,我们就不会正确地终止进程。
[alvin @ VM_0_16_centos测试] $ killall HELLO1
TEST1:未找到进程
如果我们想忽略大小写,我们可以添加-I(大写i)选项。
[alvin @ VM_0_16_centos测试] $ killall -I HELLO1
[1]终止./hello1
5,关闭命令执行echo
默认情况下,killall会告诉你命令执行,但是如果我们不关心它的执行并希望它以静默方式执行呢?只需添加-q选项,其中q表示相当,如下所示:
[alvin @ VM_0_16_centos测试] $ killall HELLO2
HELLO2:没有找到进程
[alvin @ VM_0_16_centos测试] $ killall -q HELLO2
[alvin @ VM_0_16_centos测试] $
6.列出所有支持的信号
如前所述,默认情况下,killall命令将发送SIGTERM信号。安也可以发送其他信号吗?当然有可能。您可以使用-l选项查看killall支持的所有信号:
[alvin @ VM_0_16_centos test] $ killall -l
HUP INT退出ILL陷阱ABOT IOT总线FPE KILL USR1 SEGV USR2 PIPE ALRM术语STKFLT CHLD CONT STOP TSTP TTIN TTOU URG XCPU XFSZ VTALRM PROF WINCH IO PWR SYS
没用过
您可以使用-s选项(后跟信号名称)向进程发送特殊信号。
7,互动操作
如果你在杀死多个进程时不放心并且担心杀死一个不应该被杀死的进程,那么你可以使用-i选项,这样你就可以自由决定应该杀死哪些进程以及应该杀死哪些进程。保留。
[alvin @ VM_0_16_centos测试] $ killall -i你好*
杀了hello2(13825)? (是/否)y
杀了你好3(13831)? (是/否)N
你好:没有找到进程
Hello1:没有找到进程
Hello3:没有找到进程
Hello.c:没有找到进程
[2]  - 终止./hello2
8,等到进程终止
当信号发送到进程时,如果要在返回执行结果之前确定进程已被终止,则可以使用-w选项,其中w代表wait,如下所示:
[alvin @ VM_0_16_centos test] $ killall -w hello1
[4] +终止./hello1
似乎这里没有效果,但是当它实际执行时,可以发现执行结果将在一两秒后出现。如果没有-w选项,将立即显示执行结果。
IT外包
>
400-635-8089
立即
咨询
电话咨询
服务热线
400-635-8089
微信咨询
微信咨询
微信咨询
公众号
公众号
公众号
返回顶部