pkill
pkill可以给指定的进程发送信息,它可以结束某个执行的进程或者目录登录的用户。
此命令的适用范围:RedHat、RHEL、Ubuntu、CentOS、SUSE、openSUSE、Fedora。
1、语法
pkill [-signal] [-fvx] [-n|-o] [-P ppid,...] [-g pgrp,...] [-s sid,...] [-u euid,...] [-U uid,...] [-G gid,...] [-t term,...] [pattern]
2、选项列表
选项
说明
--help
显示帮助文档
--version
显示命令版本
-f
查找完成的文件名
-g pgrp
只匹配列出的进程组ID中的进程。进程组0被转换为pgrep或pkill自己的进程组。
-G gid
只匹配实际组ID列出的进程。可以使用数值或符号值。
-n
选择最近执行的进程
-o
选择最早的进程
-P ppid
选择父pid匹配的进程
-s sid
只匹配进程会话ID列出的进程。会话ID 0被转换为pgrep或pkill自己的会话ID。
-t term
查找符合终端号的进程
-u euid
只匹配其有效用户ID列出的进程。
-U uid
只匹配实际用户ID列出的进程。可以使用数值或符号值。
-v
查找不符合条件的进程
-x
只匹配其名称(如果-f指定了命令行)与模式完全匹配的进程。
-signal
要发送的信号
3、返回值
退出码
说明
0
一个或多个进程符合。
1
没有进程符合
2
命令的语法错误
3
致命错误:内存不足等。
4、实例
杀死wc进程
[root@localhost ~]# pkill -SIGKILL wc //向wc发送KILL信号,杀死进程
[1]-已杀死nice -n 19 wc
You have new mail in /var/spool/mail/root
[root@localhost ~]# ps //查看进程,wc已经杀死
PID TTY TIME CMD
8266 pts/0 00:00:00 bash
8554 pts/0 00:00:00 ps
首先说一下kill命令,它是通过pid(进程ID)来杀死进程,要得到某个进程的pid,我们可以使用ps(process status)命令,默认情况下,kill命令发送给进程的终止信号是15,但是有些进程不会理这个信号,这样的话,可以用9信号来强制杀死,信号9是不会被忽略的强制性执行信号。
而killall和pkill都是使用命令名来终止进程的有效手段,它们不同于kill通过pid来杀死进程的方式,它可以理解为成批成批的杀死进程,当然这么做的危险性也相对提高了不少。当然它们也可以给进程发送相应的终止信号。
比如我们要杀死mysql的相关进程,我们可以使用pkill -9 mysqld即可杀死所有mysql相关的进程,比较方便,不过它有可能会误删程序。
下面是常用的信号的数字及其含义:
1 表示从终端上发出的结束信号
2 表示从键盘上发出的终端信号(即Ctrl+c)
3 表示从键盘上发出的退出信号(即Ctrl+\)
8 表示浮点异常,比如被0除
9 表示结束接受信号的进程,也就是强行杀死进程
15 kill命令默认的终止信号
17 子进程终止或结束的信号
19 从键盘来执行的信号