【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)。
相关推荐
AlfredZhao1 天前
vi 删除指定范围的行,不用再反复按 dd
linux·vi
用户9718356334661 天前
银河麒麟 KY10 申威(SW64) 安装 nginx-1.16.1-2.p01.ky10.sw_64.rpm 详细步骤
linux
猪脚踏浪1 天前
linux 拷贝文件或目录到指定的位置
linux
大树882 天前
金刚石散热越强,管路越先见顶
大数据·运维·服务器·人工智能·ai
摇滚侠2 天前
Linux CentOS7 rpm 安装 MySQL 5.7
linux·运维·mysql
bush42 天前
嵌入式linux学习记录十四、术语
linux·嵌入式
载数而行5202 天前
Linux 11 动态监控指令top
linux
小宇宙Zz2 天前
Maven依赖冲突
java·服务器·maven
网络研究院2 天前
2026年网络安全
网络·安全·法律·法规·趋势·发展
酣大智2 天前
ARP代理--工作原理
运维·网络·arp·arp代理