是什么终止了我的进程?

是什么终止了我的进程?

一直有一个应用程序不断被终止的问题。这是运行 RHEL5 服务器的程序。我们对该进程运行 strace,在跟踪文件的末尾,我得到了一堆+++ 被 SIGKILL 杀死 +++消息。无法捕获 SIGKILL,因此我试图找到一种方法来追踪进程被终止的原因。

我尝试使用 Red Hat 的一些建议,例如

auditctl -a exit,always -S kill 

这似乎不起作用。我在 audit.log 中没有看到任何 kill 条目。

Red Hat 的另一个建议是使用 systemtap。我通过 yum 安装了它,并尝试使用提供的 sigmon.stp 脚本运行 stap。sigmon.stp 位于此页面上:西格蒙 我使用了评论部分提供的命令,以下是输出:

# stap sigmon.stp -x 12647 SIGKILL -v
Pass 1: parsed user script and 85 library script(s) using 146868virt/23716res/3024shr/21404data kb, in 110usr/10sys/116real ms.
semantic error: while resolving probe point: identifier 'kernel' at /usr/share/systemtap/tapset/signal.stp:60:37
        source: probe __signal.send.send_sigqueue = kernel.function("send_sigqueue")
                                                    ^
semantic error: missing x86_64 kernel/module debuginfo under '/lib/modules/2.6.18-308.13.1.el5/build'
semantic error: while resolving probe point: identifier '__signal' at :39:21
        source: probe signal.send = __signal.send.send_sigqueue,
                                    ^
semantic error: no match
semantic error: while resolving probe point: identifier 'signal' at sigmon.stp:30:7
        source: probe signal.send 
                      ^
Pass 2: analyzed script: 1 probe(s), 0 function(s), 0 embed(s), 0 global(s) using 150348virt/28920res/4696shr/24884data kb, in 30usr/40sys/81real ms.
Pass 2: analysis failed.  Try again with another '--vp 01' option.
Missing separate debuginfos, use: debuginfo-install kernel-2.6.18-308.13.1.el5.x86_64  

有人使用过 stap 命令吗?还有其他方法可以找出导致进程终止的原因吗?

答案1

SystemTap 似乎无法找到您内核的调试符号。您是否为正在运行的内核安装了所需的内核调试包?SystemTap 指南说:

要部署 SystemTap,您需要安装 SystemTap 软件包以及适用于您内核的 -devel、-debuginfo 和 -debuginfo-common 软件包。如果您的系统安装了多个内核,并且您希望在多个内核上使用 SystemTap,则需要为每个内核版本安装 -devel 和 -debuginfo 软件包。

相关内容