Linux中信号机制怎么查看系统中信号发送的历史记录

云浩大大_7500

云浩大大_7500

2026-10-27

765人浏览

原创

Linux系统不记录信号发送历史,因信号是内核向进程发送的瞬时异步通知,仅修改task_struct中pending位图,不落盘、不记日志;需提前配置auditd规则(如auditctl -a always,exit -F arch=b64 -S kill)才能捕获kill系统调用。

linux中信号机制怎么查看系统中信号发送的历史记录

Linux系统不记录信号发送的历史记录。

这不是功能缺失,而是设计使然:信号是内核向进程发送的瞬时、异步通知,本身不带持久化日志属性。内核在发送信号时,只是把对应编号写入目标进程 PCB(task_struct)中的 pending 位图,然后由调度器在合适时机触发处理——整个过程不落盘、不记日志、不存档。

所以,如果你在找类似“进程 A 在 14:23:05 向进程 B 发送了 SIGTERM”这样的操作痕迹,默认情况下——
✅ 系统不会保存
❌ journalctl、/var/log/*、ps、/proc/*/status 都查不到
❌ auditd 也不会捕获,除非你提前配置了专门针对 kill() 系统调用的审计规则


真实可行的排查路径(需提前部署或间接推断)

✅ 查看当前哪些信号正挂起在进程中

适用于诊断“为什么进程没响应”:

  • cat /proc/[PID]/status | grep SigQ:显示 pending + blocked 信号队列长度
  • cat /proc/[PID]/status | grep SigPnd:十六进制位图,表示已收到但尚未处理的信号(pending)
  • cat /proc/[PID]/status | grep SigBlk:被阻塞的信号掩码

示例:SigPnd: 0000000000000002 表示第 2 号信号(SIGINT)已送达但未处理。

✅ 审计 kill 系统调用(唯一接近“历史记录”的方式)

必须提前启用 auditd 并添加规则:

sudo auditctl -a always,exit -F arch=b64 -S kill -F a2=0 -k signal_kill

之后可用:

sudo aureport -m --key signal_kill --start today

输出会包含:谁(uid)、哪个进程(pid)、向谁(a1 参数为目标 pid)、发了什么信号(a2 是信号编号)。

⚠️ 注意:

Obsidian (Linux)
Obsidian (Linux)

操作 Obsidian 库(纯 Markdown 笔记),并通过 notesmd-cli 实现自动化。

下载
  • 规则中 a2=0 表示匹配所有信号;若只关心 SIGTERM,可写 a2=15
  • 没启用 auditd 就没有数据,事后无法补录

✅ 结合 systemd 日志反推服务级信号行为

如果进程由 systemctl 管理,且因 OOM、超时或依赖失败被自动终止,journald 可能记录上下文:

journalctl -u nginx.service --since "2026-09-15" | grep -i -E "(killed|oom|timeout|stopping)"

但这不是“信号发送记录”,而是服务管理器的决策日志,信号只是执行手段之一。

✅ shell 历史 + 进程启动时间交叉比对(仅限人工回忆场景)

比如你记得自己执行过:

kill -USR2 12345

那就查:

history | grep "kill.*12345"
ps -o pid,comm,lstart -p 12345 2>/dev/null

再结合应用自身日志(如 Nginx 收到 USR2 会 reload,通常会在 error_log 写一行),才能拼出完整链条。


为什么没有默认信号历史?

  • 信号本质是轻量级事件通知,类似“拍一下肩膀”,不是 RPC 或事务操作
  • 记录每次 kill() 调用会产生显著性能开销和磁盘压力(尤其高频场景)
  • 安全上也需权衡:过度日志可能暴露敏感操作意图

所以 Linux 的哲学是:需要日志,就主动加;不加,就不该有。

不复杂但容易忽略

相关文章

PHP速学视频免费教程(入门到精通)
PHP速学视频免费教程(入门到精通)

PHP怎么学习?PHP怎么入门?PHP在哪学?PHP怎么学才快?不用担心,这里为大家提供了PHP速学教程(入门到精通),有需要的小伙伴保存下载就能学习啦!

下载

相关标签:

linux linux系统 linux入门

本站声明:本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn

相关专题

更多
磁盘配额是什么
磁盘配额是什么

磁盘配额是计算机中指定磁盘的储存限制,就是管理员可以为用户所能使用的磁盘空间进行配额限制,每一用户只能使用最大配额范围内的磁盘空间。php中文网为大家提供各种磁盘配额相关的内容,教程,供大家免费下载安装。

2023.06.21

4250

4

如何安装LINUX
如何安装LINUX

本站专题提供如何安装LINUX的相关教程文章,还有相关的下载、课程,大家可以免费体验。

2023.06.29

3593

10

linux find
linux find

find是linux命令,它将档案系统内符合 expression 的档案列出来。可以指要档案的名称、类别、时间、大小、权限等不同资讯的组合,只有完全相符的才会被列出来。find根据下列规则判断 path 和 expression,在命令列上第一个 - ( ) , ! 之前的部分为 path,之后的是 expression。还有指DOS 命令 find,Excel 函数 find等。本站专题提供linux find相关教程文章,还有相关

2023.06.30

2833

5

linux修改文件名
linux修改文件名

本专题为大家提供linux修改文件名相关的文章,这些文章可以帮助用户快速轻松地完成文件名的修改工作,大家可以免费体验。

2023.07.05

6930

7

linux系统安装教程
linux系统安装教程

linux系统是一种可以免费使用,自由传播,多用户、多任务、多线程、多CPU的操作系统。本专题提供linux系统安装教程相关的文章,大家可以免费体验。

2023.07.06

6582

7

linux查看文件夹大小
linux查看文件夹大小

Linux是一种自由和开放源码的类Unix操作系统,存在着许多不同的Linux版本,但它们都使用了Linux内核。Linux可安装在各种计算机硬件设备中,比如手机、平板电脑、路由器、视频游戏控制台、台式计算机、大型机和超级计算机。linux怎么查看文件夹大小呢?php中文网给大家带来了相关的教程以及文章,欢迎大家前来学习阅读。

2023.07.20

3793

8

linux查看ip命令
linux查看ip命令

本专题为大家提供linux查看ip命令相关文章内容,感兴趣的朋友可以免费下载体验试试。

2023.07.20

3285

4

linux查看cpu使用率
linux查看cpu使用率

在linux的系统维护中,可能需要经常查看cpu使用率,分析系统整体的运行情况。本专题为大家带来了linux查看cpu使用率的相关文章,感兴趣的朋友千万不要错过了。

2023.07.25

3519

6

linux查找文件命令
linux查找文件命令

Linux是一种自由和开放源码的类Unix操作系统,存在着许多不同的Linux版本,但它们都使用了Linux内核。Linux可安装在各种计算机硬件设备中,比如手机、平板电脑、路由器、视频游戏控制台、台式计算机、大型机和超级计算机。php中文网给大家带来了相关的教程以及文章,欢迎大家前来学习阅读。

2023.07.31

297

3

热门下载

更多
网站特效
/
网站源码
/
网站素材
/
前端模板

精品课程

更多
相关推荐
/
热门推荐
/
最新课程
Python uv官方安装与入门文档
Python uv官方安装与入门文档

共0课时 | 0人学习

Buffalo框架快速入门指南
Buffalo框架快速入门指南

共0课时 | 0人学习

Valgrind支持平台说明
Valgrind支持平台说明

共0课时 | 0人学习