killalljava_Linux下使⽤killall命令终⽌进程的8⼤⽤法
[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
时间正则表达式java
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 选项的话,执⾏结果马上就显⽰。

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。