运行结果如下:
- [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、等待直到某个进程被终止
(编辑:ASP站长网)
|