Linux信号记录器

我正在寻找Linux内核的信号记录器,而不需要修补内核.

我发现很多文章都有补丁,但我对此并不感兴趣.

我正在运行默认的Ubuntu 13.04.

# uname -a
Linux bt 3.8.0-26-lowlatency #18-Ubuntu SMP PREEMPT Tue Jun 25 22:36:04 UTC 2013 x86_64 x86_64 x86_64 GNU/Linux

我需要:pid,comm(发送者) – >信号(编号0-31) – > pid,comm(捕手)

也会很棒:

  pidtree of sender ----- - - - - - receiver(cmd) ---- child1 of receiver, etc
              /                     \----child2---child1 of child2(cmd)
             ppid(+cmd)               ----child3(+cmd)
            /                          \__child4(+cmd)
           ppid of ppid(cmd)
          ....
         /
        init

捕手也一样.时间戳.

我已经找到了什么:

superfrink.net: patch Linux UserSpace Signal Logging (Logs signals sent from userspace programs.) by Chad Clark (Version 10 March 2003)

grsecurity补丁有类似的实现.

我需要轻松简便的方法在Ubuntu上实现这一点.

解决方法:

我可以给你一个部分解决方案.

在linux内核中使用audit子系统.审计子系统记录核心转储信号.核心转储信号是:

> ABRT
> FPE
> ILL
>退出
> SEGV
>陷阱
> SYS
> EMT
>公共汽车
> XCPU
> XFSZ

可以在/var/log/audit.log中找到审核日志.
对于核心转储信号,审核记录如下

type=ANOM_ABEND msg=audit(1386433952.455:141): auid=1000 uid=1000 gid=1000 ses=2 pid=6664 comm="bash" reason="memory violation" sig=24

以上是使用uid 1000在信号SIGXCPU上对用户的进程6664进行日志记录的示例.从该日志中,您可以找出“捕获器”的comm和pid的详细信息.请注意,日志中的reason字段已损坏.即使使用此日志,我们对发件人也毫无头绪.

您可以找到配置详细信息here

上一篇:气“疯”了!| 经济学人全球早读精选


下一篇:PHP 利用 curl 发送 post get del put patch 请求