【Linux 进程信号控制】

Linux 进程信号控制(kill/killall/pkill)核心总结

一、信号(Signal)核心概念

  1. 本质:发给进程的软件中断,用于报告事件(错误/外部操作),控制进程行为(终止/暂停/重启);
  2. 分类:Term(立即关闭)、Core(核心转储后终止)、Stop(暂停,可恢复);
  3. 指定方式 :支持名称(-HUP/-SIGHUP)或编号(-1/-9),名称大小写不敏感。

二、常用信号速查表

编号 短名称 完整名称 核心作用 特点 触发方式/典型场景
1 HUP SIGHUP 重新加载配置 不终止进程,仅重读配置 kill -1 进程PID(重启Nginx/Httpd配置)
2 INT SIGINT 键盘中断终止 可被进程拦截/忽略 Ctrl+C(终端终止前台进程)
3 QUIT SIGQUIT 核心转储后终止 生成内存映像(core文件),便于排错 Ctrl+\(终端触发)
9 KILL SIGKILL 强制终止进程 无法拦截/忽略,立即杀死(最强制) kill -9 进程PID(杀死无响应进程)
15 TERM SIGTERM 正常终止进程 默认信号,允许进程清理资源 kill 进程PID(不加信号默认TERM)
18 CONT SIGCONT 恢复暂停进程 配合19/20使用 kill -18 进程PID(恢复Ctrl+Z暂停的进程)
19 STOP SIGSTOP 强制暂停进程 无法拦截/忽略 kill -19 进程PID(强制暂停)
20 TSTP SIGTSTP 键盘暂停进程 可被拦截/恢复 Ctrl+Z(终端暂停前台进程)

三、进程信号操作命令(kill/killall/pkill)

1. kill(按PID发送信号,最基础)

  • 核心语法kill [-信号] 进程PID(无信号默认发15号TERM);

  • 关键参数kill -l(列出所有信号的名称/编号);

  • 示例

    bash 复制代码
    kill -9 5199        # 强制杀死PID=5199的进程
    kill -SIGTERM 5205  # 按名称发送终止信号(等价kill -15 5205)
    kill 5205           # 默认发15号信号,正常终止进程

2. killall(按进程名发送信号,批量操作)

  • 核心语法killall [-信号] 进程名(匹配命令名称批量处理);

  • 特点:无需查PID,直接按进程名操作,默认发15号TERM;

  • 示例

    bash 复制代码
    killall control     # 终止所有名为control的进程(等价killall -15 control)
    killall -9 nginx    # 强制杀死所有nginx进程

3. pkill/pgrep(按条件筛选+发送信号,精细化控制)

命令 核心作用 关键参数 示例
pgrep 按条件查找进程PID/名称 -l(显示进程名+PID)、-u 用户名/UID(指定用户) pgrep -l -u bob(列出bob用户的所有进程名+PID)
pkill 按条件发送信号给进程 -U 用户名(指定用户)、-t 终端(指定终端)、-信号 pkill -U user(终止user用户的所有进程) pkill -9 -t pts/1(强制杀死pts/1终端的所有进程)

四、辅助命令(进程查询)

1. ps aux(查看所有进程详细信息)

  • 选项解析

    • a:显示所有用户的进程;
    • u:以用户为中心(显示用户名、CPU/内存占用率);
    • x:显示无控制终端的进程(后台进程);
  • 过滤用法ps aux | grep 关键词(筛选含指定关键词的进程),示例:

    bash 复制代码
    ps aux | grep job  # 查找所有含"job"的进程(命令/参数中包含)

2. 管道符(|)

  • 作用:将前一个命令的输出作为后一个命令的输入,实现"查询+筛选"联动。

五、核心运维原则

  1. 终止进程优先用15号TERM:允许进程清理资源(如保存数据),仅当进程无响应时用9号KILL;
  2. 重启配置优先用1号HUP:无需终止进程,直接重读配置(如Nginx/Httpd);
  3. 暂停进程区分19/20:19号STOP强制暂停(不可拦截),20号TSTP键盘暂停(可恢复);
  4. 批量操作优先killall/pkill:无需逐个查PID,按名称/用户批量处理,效率更高;
  5. 查询进程优先pgrep :精准筛选用户/终端/名称,避免grep过滤自身进程(可加grep -v grep排除)。

六、高频实操场景

  1. 重启Nginx配置:kill -1 $(pgrep nginx)(无需停止服务);
  2. 强制杀死无响应的Java进程:pkill -9 -f java(-f匹配命令行完整内容);
  3. 终止指定用户的所有进程:pkill -U test
  4. 恢复Ctrl+Z暂停的进程:jobs(查看暂停进程)→ fg %1(前台恢复)/kill -18 进程PID
  5. 排查进程:pgrep -l -u root(列出root用户的所有进程名+PID)。
相关推荐
安科士andxe9 小时前
深入解析|安科士1.25G CWDM SFP光模块核心技术,破解中长距离传输痛点
服务器·网络·5g
YJlio12 小时前
1.7 通过 Sysinternals Live 在线运行工具:不下载也能用的“云端工具箱”
c语言·网络·python·数码相机·ios·django·iphone
CTRA王大大12 小时前
【网络】FRP实战之frpc全套配置 - fnos飞牛os内网穿透(全网最通俗易懂)
网络
小白同学_C12 小时前
Lab4-Lab: traps && MIT6.1810操作系统工程【持续更新】 _
linux·c/c++·操作系统os
今天只学一颗糖12 小时前
1、《深入理解计算机系统》--计算机系统介绍
linux·笔记·学习·系统架构
儒雅的晴天13 小时前
大模型幻觉问题
运维·服务器
testpassportcn13 小时前
AWS DOP-C02 認證完整解析|AWS DevOps Engineer Professional 考試
网络·学习·改行学it
通信大师14 小时前
深度解析PCC策略计费控制:核心网产品与应用价值
运维·服务器·网络·5g
不做无法实现的梦~14 小时前
ros2实现路径规划---nav2部分
linux·stm32·嵌入式硬件·机器人·自动驾驶
Tony Bai15 小时前
告别 Flaky Tests:Go 官方拟引入 testing/nettest,重塑内存网络测试标准
开发语言·网络·后端·golang·php