这里的systemtap脚本可以查到是谁KILL掉了你的进程。有时你可能会看到一个进程没有明显的原因而被KILL掉,你不知道是谁杀死了它。当然,这里我们谈论的不是由于编程错误导致的SEGV或SIGBUS导致的进程死亡,而是进程真的被KILL掉。
在下面的脚本中,你当然可以用另一个数字替换“9”以捕捉另一个信号。脚本必须以root身份运行,如下所示:
# stap -o signal2.out signal2.st
输出文件signal2.out可能如下所示:
[csh - 7211 - 7211] sent SIGKILL to pid 9122
脚本如下:
#! /usr/bin/env stap
/*
* signal2.st: Track sender of SIGKILL to a given process.
*
* Run as user 'root' using the following command line:
*
* stap -o signal2.out signal2.st
*
*
* dalla
*/
probe syscall.kill
{
if (sig == 9) {
printf("[%s - %d - %d] sent SIGKILL to pid %d\n",
execname(), pid(), tid(), pid);
}
}