killall 也是用于关闭进程的一个命令,但和 kill 不同的是,killall 命令不再依靠 PID 来杀死单个进程,而是通过程序的进程名来杀死一类进程,也正是由于这一点,该命令常与 ps、pstree 等命令配合使用。
killall 命令的基本格式如下:
[root@localhost ~]# killall [选项] [信号] 进程名
注意,此命令的信号类型同 kill 命令一样,因此这里不再赘述,此命令常用的选项有如下 2 个:
1、-i:交互式,询问是否要杀死某个进程;
2、-I:忽略进程名的大小写;
接下来,给大家举几个例子。
【例 1】杀死 httpd 进程
[root@localhost ~]# service httpd start #启动RPM包默认安装的apache服务 [root@localhost ~]# ps aux | grep "httpd" | grep -v "grep" root 1600 0.0 0.2 4520 1696? Ss 19:42 0:00 /usr/local/apache2/bin/httpd -k start daemon 1601 0.0 0.1 4520 1188? S 19:42 0:00 /usr/local/apache2/bin/httpd -k start daemon 1602 0.0 0.1 4520 1188? S 19:42 0:00 /usr/local/apache2/bin/httpd -k start daemon 1603 0.0 0.1 4520 1188? S 19:42 0:00 /usr/local/apache2/bin/httpd -k start daemon 1604 0.0 0.1 4520 1188? S 19:42 0:00 /usr/local/apache2/bin/httpd -k start daemon 1605 0.0 0.1 4520 1188? S 19:42 0:00 /usr/local/apache2/bin/httpd -k start #查看httpd进程 [root@localhost ~]# killall httpd #杀死所有进程名是httpd的进程 [root@localhost ~]# ps aux | grep "httpd" | grep -v "grep" #查询发现所有的httpd进程都消失了
【例 2】交互式杀死 sshd 进程
[root@localhost ~]# ps aux | grep "sshd" | grep -v "grep" root 1733 0.0 0.1 8508 1008? Ss 19:47 0:00/usr/sbin/sshd root 1735 0.1 0.5 11452 3296? Ss 19:47 0:00 sshd: root@pts/0 root 1758 0.1 0.5 11452 3296? Ss 19:47 0:00 sshd: root@pts/1 #查询系统中有3个sshd进程。1733是sshd服务的进程,1735和1758是两个远程连接的进程 [root@localhost ~]# killall -i sshd #交互式杀死sshd进程 杀死sshd(1733)?(y/N)n #这个进程是sshd的服务进程,如果杀死,那么所有的sshd连接都不能登陆 杀死 sshd(1735)?(y/N)n #这是当前登录终端,不能杀死我自己吧 杀死 sshd(1758)?(y/N)y #杀死另一个sshd登陆终端