killall [选项] [-signal(信号)] [name]
killall发送一条信号给所有允许任意指定命令的进程。如果没有指定信号名,则发送SIGTERM。信号可以是名字或数字,只有信号0(检查进程是否存在)只能以数字方式指定。
如果命令名包括斜杠(/),那么执行该特定文件的进程将被杀死,这与进程名无关。
Killall进程杀不死自己,但可以杀死其他killall进程。
(1).选项
-e,--exact 精准匹配。由于命令名长于15个字符时,会杀死匹配前15个字符的所有进程。此时需要使用-e选项进行精准匹配。
-g,--process-group 杀死属于该进程组的所有进程。
-i,--interactive 交互式,杀死进程前请求确认
-I,--ignore-case 进程名匹配不区分大小写
-l,--list 列出所有信号名
-o,--older-than 仅匹配指定时间之前(在指定时间之前开始)的进程。单位s、m、h、d、w(周)、M、y
-q,--quiet 静默模式,不报错
-r,--regexp 使用扩展正则表达式解释name
-s,--signal 发送指定信号等同[-signal]
-u.--user 仅终止指定用户拥有的进程。命令名是可选的。
-v,--verbose 报告是否发送成功
-V,version 显示版本
-w,--wait 等待killall执行完成,每秒检测一次,直到完成返回。如果信号被忽略或不起作用,或停留在僵尸状态,killall会永久等待。
-y,--younger-than 仅匹配指定时间之后的进程,与-o选项相反。
-z,--context (仅限SELinux)指定环境(变量):仅杀死含有与指定扩展正则表达式匹配的环境(变量)的进程。必须在其他参数之前,命令名是可选的。
(2).实例
killall的信号没有kill的信号多,详细如下
[xf@xuexi ~]$ 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
常用的仍然是HUP(1,终端断线),INT(2,中断,同+c),QUIT(3,退出,同+\),KILL(9,强制终止),TERM(15,缺省信号,终止,正常结束),CONT(18,继续,同fg/bg命令),STOP(19,停止),TSTP(20,暂停,同+Z)
正常终止与强制终止
[xf@xuexi ~]$ vim a.txt&
[1] 9870
[xf@xuexi ~]$ killall -15 vim //TERM终止,正常结束
[1]+ 已停止 vim a.txt
[xf@xuexi ~]$ vim a.txt&
[1] 9601
[xf@xuexi ~]$ killall -9 vim //KILL强制终止
[1]+ 已停止 vim a.txt
[1]+ 已杀死 vim a.txt
(3).扩展
pkill [选项]
与killall类似,比较常见的用法是root用户强制踢出已登录的用户
[root@xuexi ~]# w //查看当前所有在线用户
11:08:44 up 1:43, 4 users, load average: 0.14, 0.13, 0.09
USER TTY FROM LOGIN@ IDLE JCPU PCPU WHAT
xf :0 :0 09:26 ?xdm? 4:07 0.68s /usr/libexec/gn
root pts/0 :1 11:08 4.00s 0.11s 0.03s w
root :1 :1 11:01 ?xdm? 4:07 0.55s /usr/libexec/gn
xf pts/1 192.168.128.137 11:08 21.00s 0.08s 0.08s -bash //目标
[root@xuexi ~]# pkill -kill -t pts/1 //发送kill信号给TTY为pts/1的目标
[root@xuexi ~]# w
11:09:07 up 1:43, 3 users, load average: 0.10, 0.13, 0.09
USER TTY FROM LOGIN@ IDLE JCPU PCPU WHAT
xf :0 :0 09:26 ?xdm? 4:10 0.69s /usr/libexec/gn
root pts/0 :1 11:08 3.00s 0.12s 0.03s w
root :1 :1 11:01 ?xdm? 4:10 0.56s /usr/libexec/gn