Linux 进程管理:Linux pkill
在 Linux 中,如果你需要通过命令行终止一个进程(无论什么原因),你可以使用 kill 命令,但是你需要输入欲终止进程的 PID 。有没有不需要进程 PID 的命令方式终止进程的方法?
是的,有一个命令行工具,称为 pkill 命令可以做到。本篇讨论这个命令的使用,通过一些简单的例子理解其用法。讲解之前,值得一提的是本文所有的例子都在 Ubuntu 16.04 LTS 系统上运行通过。
Linux pkill 命令
pkill 命令是一个简单的、终止进程的基本方法。以下是其语法:
pkill [options] pattern
#pkill [命令选项] 模式
下面是这个命令行工具的 man 手册中的说明:
pkill - signal processes based on name and other attributes
# pkill - 基于名称和其它属性对确定的进程发送进程信号
下面是一些问与答(Q&A)方式的举例,帮助你更好理解这个命令的使用。
问1. 如何使用 pkill 命令行?
基本命令非常简单直接 - 唯一需要的是执行 pkill 命令时给它传递一个进程名称的参数。
举例,如果想要终止如 gedit 进程,可以使用如下命令:
$ pkill gedit
就这样,在执行上述命令后,你会看到 gedit 进程(如果正运行着)被关闭。
问2. 如何使 pkill 命令发送不同的信号?
本篇前面提到, pkill 命令发送一个信号给进程,默认地,这个信号是 SIGTERM 。但是如果你想,你可以改变这个信号,使用 --signal 命令选项。
举例:
$ pkill --signal SIGKILL gedit
问3. 如何基于进程启动的完全命令行去终止进程?
默认地,输入的名称(模式)匹配进程名称。然而,如果你想使 pkill 命令精确匹配进程启动的完全命令行,可以使用 -f 命令选项达到目的。
举例,让我们看一下运行在我系统中的两个 ping 命令进程。下面是我使用 ps 命令并用 grep 过滤的 ping 命令进程的屏幕输出:
aman 8942 0.0 0.0 14948 1840 pts/4 T 08:29 0:00 ping www.bing.com
aman 8945 0.0 0.0 14948 1800 pts/4 S 08:30 0:00 ping www.sohu.com
现在假设仅仅想把 'ping www.sohu.com' 的命令进程终止。
如果以下面命令方式:
$ pkill ping
上面2个 ping 命令的进程都会被终止。故为了避免这个我们不期望的结果,我们可以使用 -f 命令选项单独对其中的一个进程进行终止:
$ pkill -f "ping www.sohu.com"
所以,我们以后一命令执行,仅 "ping www.sohu.com" 的命令进程被终止。
问4. 如何使 pkill 对大小写不敏感?
默认 pkill 对大小写敏感,意味着命令中任何大小写不同,含义不同。然而,你可以使用 -i 命令选项改变这个默认设置。
pkill -i [process-name]
问5. 如何让系统日志进程重读其配置文件使配置生效?
可以使用如下命令完成此目的:
$ pkill -HUP syslogd
结论
pkill 命令在你终止进程时超级有用。我们在这里已经讨论了它的一些用法和命令选项。
推荐文章: