Linux命令是对Linux系统进行管理的命令。对于Linux系统来说,无论是中央处理器、内存、磁盘驱动器、键盘、鼠标,还是用户等都是文件,Linux系统管理的命令是它正常运行的核心,与之前的DOS命令类似。linux命令在系统中有两种类型:内置Shell命令和Linux命令。本文主要介绍Linux pkill 命令。

1、命令简介

pkill:用于根据进程名或其他条件来终止(杀死)进程。它与 kill 命令不同,pkill 可以根据进程名进行杀死,而不需要指定进程的PID(进程ID)。

2、命令语法

pgrep [-flvx] [-d delimiter] [-n|-o] [-P ppid,...] [-g pgrp,...]
        [-s sid,...] [-u euid,...] [-U uid,...] [-G gid,...]
        [-t term,...] [pattern]
pkill [-signal] [-fvx] [-n|-o] [-P ppid,...] [-g pgrp,...]
        [-s sid,...] [-u euid,...] [-U uid,...] [-G gid,...]
        [-t term,...] [pattern]

3、命令描述

pgrep 遍历当前正在运行的进程,并将与选择条件匹配的进程的进程ID列表显示在标准输出上。所有条件都必须匹配。例如,pgrep -u root sshd

只会列出由root拥有的名为sshd的进程。另一方面,pgrep -u root,daemon 会列出由root或daemon拥有的进程。

pkill 将发送指定的信号(默认为SIGTERM)给每个进程,而不是将它们列在标准输出上。

4、命令选项

选项

描述

-signal

-s signal

发送指定的信号到匹配的进程。

-l

列出所有可用的信号。

-u user

只匹配指定用户的进程。

-U user

只匹配指定的真实用户ID的进程。

-g pgrp

只匹配指定的进程组。

-t terminal

只匹配在指定终端上运行的进程。

-x

只匹配那些与提供的名字完全相同的进程。

-n

只选择最新的匹配进程。

-o

只选择最旧的匹配进程。

-P pid

只匹配指定父进程ID的进程。

-G sid

只匹配指定会话ID的进程。

-v

反转匹配,即选择不匹配指定条件的进程。

--ns pid

匹配与指定进程相同的名字空间的进程。

--nslist ns,...

指定要与给定进程进行比较的名字空间列表。

5、使用示例

1)发送一个特定信号到进程

想要发送一个 HUP 信号到所有名为 "nginx" 的进程:

pkill -HUP nginx

2)列出所有可用的信号

pkill -l

3)按用户匹配进程并结束它们

杀死所有由用户 "levi" 运行的 "node" 进程:

pkill -u levi node

4)按终端匹配进程

结束所有在 pts/1 终端上运行的 "bash" 进程:

pkill -t pts/1 bash

5)精确匹配进程名

如果你只想杀死名为 "python3" 的进程,而不是 "python3.7" 或其他变种:

pkill -x python3

6)选择并结束最新的进程

如果你运行了多个 "firefox" 实例并只想杀死最新的一个:

pkill -n firefox

7)选择并结束最旧的进程

杀死运行时间最长的 "chrome" 进程:

pkill -o chrome

8)按父进程ID匹配并结束进程

杀死所有其父进程ID为 1234 的进程:

pkill -P 1234

9)反转匹配

结束所有不是 "systemd" 的进程 (谨慎使用,可能会结束很多关键进程):

pkill -v systemd

10)匹配特定的名字空间

杀死与进程ID 5678 在相同名字空间的所有进程:

pkill --ns 5678

推荐文档