Linux SIGINT 被动捕获
Linux SIGINT passive capture
是否有 Linux 内核被动记录 SIGKILL (kill -9) 关闭请求的地方?
我有一个 JVM 运行 被任意关闭,我怀疑,根据可用的证据,它正在被一个杂散进程关闭,该进程以某种方式发出关闭 JVM 进程的命令。我有强大的日志记录,但为了证实我的怀疑,我必须将日志记录级别提高到压倒性水平。
我已经通过 /var/log 进行了详尽的研究,但似乎找不到任何可以捕获和记录这些 SIGKILL 事件的地方。如果存在这些事件,我有什么想法可以找到吗?
选项 1:
如果你的内核有ftrace support (very likely) try the killsnoop
tool from Brendan Gregg's perf-tools:
wget https://raw.githubusercontent.com/brendangregg/perf-tools/master/killsnoop
chmod +x killsnoop
sudo ./killsnoop -s
killsnoop_example.txt 文件中有更多使用示例。
选项 2:(被动捕获)
如果您的内核不支持 ftrace,您可以使用 https://github.com/nfedera/kernel-siglog 中的 kernel-siglog
内核模块:
git clone https://github.com/nfedera/kernel-siglog.git
cd kernel-siglog/
make
sudo insmod siglog.ko
一旦插入 siglog
内核模块将在 /proc/siglog
中记录最后 10,000 个信号
我有一个类似的问题,并找到了使用这个内核模块的罪魁祸首。我将它插入客户的服务器几个星期,当服务被终止时,我登录,做了 cat /proc/siglog
,发现我的服务被客户自己的错误看门狗脚本终止了。
是否有 Linux 内核被动记录 SIGKILL (kill -9) 关闭请求的地方?
我有一个 JVM 运行 被任意关闭,我怀疑,根据可用的证据,它正在被一个杂散进程关闭,该进程以某种方式发出关闭 JVM 进程的命令。我有强大的日志记录,但为了证实我的怀疑,我必须将日志记录级别提高到压倒性水平。
我已经通过 /var/log 进行了详尽的研究,但似乎找不到任何可以捕获和记录这些 SIGKILL 事件的地方。如果存在这些事件,我有什么想法可以找到吗?
选项 1:
如果你的内核有ftrace support (very likely) try the killsnoop
tool from Brendan Gregg's perf-tools:
wget https://raw.githubusercontent.com/brendangregg/perf-tools/master/killsnoop
chmod +x killsnoop
sudo ./killsnoop -s
killsnoop_example.txt 文件中有更多使用示例。
选项 2:(被动捕获)
如果您的内核不支持 ftrace,您可以使用 https://github.com/nfedera/kernel-siglog 中的 kernel-siglog
内核模块:
git clone https://github.com/nfedera/kernel-siglog.git
cd kernel-siglog/
make
sudo insmod siglog.ko
一旦插入 siglog
内核模块将在 /proc/siglog
我有一个类似的问题,并找到了使用这个内核模块的罪魁祸首。我将它插入客户的服务器几个星期,当服务被终止时,我登录,做了 cat /proc/siglog
,发现我的服务被客户自己的错误看门狗脚本终止了。