Linux SIGINT被动捕获

时间:2016-02-22 22:02:55

标签: linux logging sigkill

是否存在Linux内核被动记录SIGKILL(kill -9)关闭请求的地方?

我有一个JVM正在运行,任意关闭,我怀疑,基于可用的证据,正在被一个以某种方式发出关闭JVM进程的流程进程关闭。我有强大的日志记录,但为了证实我的怀疑,我必须将日志记录级别调高到压倒性的水平。

我通过/ var / log详尽地研究过,似乎无法找到任何可能捕获并记录这些SIGKILL事件的地方。我可能发现这些事件的任何想法,如果存在的话?

1 个答案:

答案 0 :(得分:0)

选项1:

如果您的内核有ftrace支持(非常可能),请尝试使用Brendan Gregg perf-toolskillsnoop工具:

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,发现我的服务被客户自己的错误看门狗脚本杀死了。