当前位置: 首页 > article >正文

8个Linux进程管理命令详解及示例(四):kill、pkill 和 killall 命令

1.kill命令

kill 命令用于消除 Linux 命令行中的进程。

有时,会遇到消耗大量资源的进程,并希望尽快停止(或终止)它,那么这时候就要用到 kill 命令。

kill 命令的语法及含义

kill [option] [signal] PID
  • [option]:用于微调 kill 命令的默认行为。

  • [signal]:在这里指定希望用来终止进程的 kill 信号。

  • PID:要终止的进程的进程 ID。

首先,来看看 kill 命令的可用选项:

选项描述

-s

通过名称或数字指定要发送的信号(例如,-s SIGINT 或 -s  2)。此选项允许向进程发送特定信号,而不是默认的 SIGTERM 信号。

-q

使用 sigqueue(3) 而不是 kill(2)  发送信号,允许随信号一起发送一个额外的整数值。

-l

列出所有信号名称及其对应的值。此选项提供所有可用信号的列表及其数值。

-L

以更友好的格式列出所有信号名称。类似于 -l  选项,但以更易读的格式显示信号名称及其描述。

使用 kill 命令的可用信号:

信号名称信号值描述

SIGHUP

1

挂起信号,用于重启或重新加载进程。

SIGINT

2

中断信号,当按下 Ctrl+C 时发送。

SIGQUIT

3

退出信号,用于生成进程的核心转储文件。

SIGILL

4

非法指令信号,当进程尝试执行非法指令时发送。

SIGTERM

15

终止信号,kill 命令默认发送的信号。

SIGKILL

9

强制终止信号,立即终止进程。

SIGSTOP

19

停止信号,用于暂停或挂起进程。

SIGCONT

18

继续信号,用于恢复被挂起的进程。

SIGTSTP

20

终端停止信号,当按下 Ctrl+Z 时发送。

SIGCHLD

17

子进程信号,当子进程终止或停止时发送给父进程。

如果在执行 kill 命令时不指定 kill 信号,它将利用 SIGTERM 信号来终止进程。

下面列举 kill 命令的日常使用实例:

1.1终止进程

要使用 kill 命令终止进程,只需为 kill 命令指定 PID,它就会终止进程:

kill <PID>

例如,想终止Slack 桌面,就用 PID 78210 来终止 :

kill 78210

图片

此外,如果要一次杀死多个进程,可以指定它们的 PID,以空格分隔,如下所示:

kill PID1 PID2 PIDn

图片

1.2通过指定 kill 信号终止进程

在大多数情况下,默认的 kill 信号可以完成工作,但如果想使用特定的信号怎么办?这时可以用 -s 标志。

kill -s <SIGNAL-NAME/SIGNAL-NUMBER> PID

例如,用 SIGKILL 信号来终止PID为3532的进程:

kill -s SIGKILL 3532

图片

1.3列出可用的 kill 信号

要列出可用的 kill 信号,请使用 -L 如下所示的标志:

kill -L

图片

仔细观察,上面的输出会重复 kill 信号。

要解决此问题,可以使用 kill 信号的独立版本来列出可用的 kill 信号:

/usr/bin/kill -L

图片

1.4使用数字查找 kill 信号名称

如果现在有一个 kill signal 编号,可以使用 -l 标志来查找它的名称:

kill -l <Signal-number>

例如,如果想知道编号为 18 的 kill 信号的名称,可以使用以下命令:

kill -l 18

图片

2.pkill命令

pkill 命令也是用于终止 Linux 中的进程。

kill 和 pkill 命令之间的区别在于,kill 命令仅适用于进程 ID,而 pkill 命令仅适用于进程名称。

pkill 命令语法如下:

pkill [options] pattern
  • [options]:使用可用选项,可以修改 pkill 命令的默认行为。例如,使用 -u标志,可以终止特定于用户的进程。

  • pattern:用于终止进程的名称或模式,可以是进程名称、正则表达式或其他条件。

pkill 命令的可用选项如下:

选项描述

-u USER

仅终止指定用户拥有的进程。可以提供用户名或用户ID。

-f

根据完整命令行终止进程,而不仅仅是进程名称。允许终止命令行中包含特定参数或选项的进程。

-x

仅终止名称与提供的模式完全匹配的进程。

-n

仅终止符合条件的最新启动的进程。当有多个同名进程时,此选项有助于仅终止最新的进程。

-s SESSIONID

仅终止属于指定会话ID的进程。

-P PID

仅终止父进程ID与指定ID匹配的进程。允许终止特定父进程的子进程。

-g GROUPID

仅终止属于指定进程组ID的进程。进程组是共享相同进程组ID的相关进程集合。

-o

仅终止符合条件的运行时间最长的进程。当希望终止运行时间最长的进程时,此选项非常有用。

-SIGNAL

指定要发送给目标进程的信号。默认情况下,pkill 发送  SIGTERM 信号。

下面列举 pkill 命令的一些实例:

2.1按名称终止进程
pkill process-name

例如,如果想终止 firefox ,那么可以使用以下命令:

pkill firefox
2.2终止其他用户的进程

注:要终止其他用户的进程,需要超级用户权限。

如果要终止其他用户的进程,使用 -u 标志,同进附加用户名和进程名称来完成:

sudo pkill -u <username> <process-name>

例如,使用以下命令终止用户  kabir 的活动进程 htop :

sudo pkill -u kabir htop

图片

2.3基于整个命令行的 kill 进程

假设正在运行一个具有多个参数的脚本,现在想要终止使用特定参数执行的脚本。在这种情况下,可以使用带 -标志的 pkill 命令:

pkill -f "process-name --arg1 value1 --arg2 value2"

例如,正在运行一个名为 my_script.sh 具有 3 个参数的脚本:--file input.txt--output output.txt 和--timeout 30,执行方法如下:

pkill -f "./my_script.sh --file input.txt --output output.txt --timeout 30"

图片

2.4终止具体的进程

使用 pkill 命令终止进程时,它可能会终止以相同名称开头的进程。

当我使用 pkill firefox 时,它终止了 Firefox 浏览器。但实际的进程名称是 firefox-bin ,这意味着它终止了以字符串 firefox 开头的进程。

要按进程的确切名称终止进程,需使用 -x 标志:

pkill -x process-name

下面命令是用 Firefox 浏览器的确切名称来终止它的:

pkill -x firefox-bin
2.5在 pkill 命令中使用不同的 kill 信号

默认情况下,对于大多数进程,pkill 使用 SIGTERM 信号,它是终止进程的一种礼貌方式。

要使用其他 kill 信号,可以使用以下语法:

pkill -<signal_number/signal_flag> process

以下是一些可以与 pkill命令一起使用的常用 kill 信号:

信号标志信号值描述

HUP

1

挂起信号,用于重新加载或重启进程。

INT

2

中断信号,用于中断进程(通常通过 Ctrl+C 触发)。

QUIT

3

退出信号,用于终止进程并生成核心转储文件。

KILL

9

强制终止信号,用于强制终止进程,不允许进程进行清理操作。

TERM

15

终止信号,用于优雅地终止进程(默认信号)。

STOP

19

停止信号,用于暂停进程的执行。

TSTP

20

终端停止信号,用于停止或暂停进程(通常通过 Ctrl+Z 触发)。

CONT

18

继续信号,用于恢复已停止或暂停的进程。

例如,如果想使用 KILL 信号终止 Firefox 浏览器,可以通过两种方式来实现。可以直接使用 kill 信号:

pkill -9 firefox-bin

或者,可以按以下方式指定想要使用的 KILL信号:

pkill -KILL firefox-bin
3.killall 命令

Linux 中的 killall 命令允许使用进程名称终止进程。也可以使用 kill 命令执行相同的作,但它需要一个特定的选项来使用进程名称而不是 PID

其语法格式为:

killall [OPTIONS] name
  • [OPTIONS]:可选标志(也称为选项),用于修改 killall 命令的默认行为。例如,可以使用-I选项 执行不区分大小写的搜索。

  • name:要终止的进程的名称。

killall 命令的可用选项:

选项描述

-e

要求进程名称完全匹配。

-I

以不区分大小写的方式匹配进程名称。

-i

在终止进程之前交互式地请求确认。

-q

如果未找到进程,则抑制错误消息。

-r

将进程名称解释为正则表达式。

-s SIGNAL

指定要发送的信号以终止进程(默认为 SIGTERM)。

-u USER

终止指定用户拥有的进程。

-v

报告信号是否成功发送(详细输出)。

-w

等待所有被终止的进程完全结束。

下面列举killall 命令的实际示例:

3.1终止特定进程
killall process-name

例如,如果想要终止 htop ,那么可以使用以下命令:

killall htop

图片

3.2发送特定的 kill 信号

默认情况下,killall 命令使用 SIGTERM 终止信号,这在大多数情况下已经足够了,但有时在终止进程时,可能预计会出现不同的行为。

killall 命令允许从多个要终止信号中进行选择。要使用多个终止信号,请将-s 标志与终止信号一起使用,如下所示:

killall -s <Termination_Signal> process

例如,如果想使用 SIGKILL 信号终止 apache2 进程,那么使用以下命令:

killall -s SIGKILL apache2
3.3以交互方式终止进程

采用 -i选项来实现:

killall -i process

例如,下面在终止 htop 进程时使用了交互式提示符:

killall -i htop

图片

3.4终止特定用户拥有的进程

当尝试终止其他用户拥有的进程时,它会显示一条错误消息:“Operation not permitted”。

图片

要终止特定用户拥有的进程,可以使用 -u 标志指定用户名和进程名称,如下所示:

sudo killall -u <username> process

例如,如果想终止用户 team 拥有的 htop 进程,那么使用以下命令:

sudo killall -u team htop
3.5使用正则表达式终止进程

如果想一次杀死多个进程,那么可以使用正则表达式,要使用正则表达式,必须使用如下所示的 -r 标志:

kill -r REGEX

例如,如果想终止名称以“http”开头的所有进程,例如“httpd”或“http-server”,可以使用以下命令:

killall -r 'http.*'

http://www.kler.cn/a/566396.html

相关文章:

  • 养生保健:为健康生活筑牢基石
  • 人类驾驶的人脑两种判断模式(反射和预判)-->自动驾驶两种AI模式
  • 深度学习笔记17-马铃薯病害识别(VGG-16复现)
  • 验证码识别:一文掌握手机验证码的自动化处理
  • 爬虫下载B站视频简单程序(仅供学习)
  • 【考研】复试相关上机题目
  • 【西瓜书《机器学习》四五六章内容通俗理解】
  • IPoIB源码深度解析:如何基于TCP/IP协议栈实现高性能InfiniBand通信
  • Ubuntu 下 nginx-1.24.0 源码分析 - ngx_list_t
  • python-leetcode-颜色分类
  • Spark核心算子对比:`reduceByKey`与`groupByKey`源码级解析及生产调优指南
  • ESP32-S3 42引脚 语音控制模块、设备运转展示 GOOUUU TECH 果云科技S3-N16R8 控制舵机 LED开关 直流电机
  • 【Qt QML】QML鼠标事件全面解析
  • 家政一城一店融合小程序怎么开通,需要哪些资质?
  • 软件工程复试专业课-软件生命周期
  • 敏捷原则与实践(Agile principles and practices)
  • Docker02 - 深入理解Docker
  • linux有哪些常用命令?
  • CSS—引入方式、选择器、复合选择器、文字控制属性、CSS特性
  • DeepSeek在PiscTrace上完成个性化处理需求案例——光流法将烟雾动态可视化