Chinaunix首页 | 论坛 | 博客
  • 博客访问: 3929222
  • 博文数量: 93
  • 博客积分: 3189
  • 博客等级: 中校
  • 技术积分: 4229
  • 用 户 组: 普通用户
  • 注册时间: 2009-02-02 13:29
个人简介

出没于杭州和青岛的程序猿一枚,对内核略懂一二

文章分类

全部博文(93)

文章存档

2016年(2)

2015年(3)

2014年(11)

2013年(29)

2012年(16)

2011年(5)

2010年(5)

2009年(22)

分类: LINUX

2015-11-03 17:14:34

转载请注明出处 http://forever.blog.chinaunix.net 瀚海书香

今天上午有个同事问,自己的进程被莫名其妙的杀死了,想知道是被那个进程误杀了。
第一个想法是用kernel hack系统调用的方式,刚打算翻出hook的代码,想起了貌似audit不就是干这个的吗

#auditctl -a exit,always -S kill
#auitctl -l

#tail -f /var/log/audit/audit.log 

加上这个规则后,再用kill杀死一个进程就可以看到是谁干的了。
type=SYSCALL msg=audit(1446528422.179:18502): arch=c000003e syscall=62 success=yes exit=0 a0=53f a1=8 a2=0 a3=53f items=0 ppid=1427 pid=2613 auid=0 uid=0 gid=0 euid=0 suid=0 fsuid=0 egid=0 sgid=0 fsgid=0 tty=tty1 ses=1 comm="bash" exe="/usr/bin/bash" subj=unconfined_u:unconfined_r:unconfined_t:s0-s0:c0.c1023 key=(null)
type=OBJ_PID msg=audit(1446528422.179:18502): opid=1343 oauid=0 ouid=0 oses=5 obj=unconfined_u:unconfined_r:unconfined_t:s0-s0:c0.c1023 ocomm="top"

pid=2613  表示这个进程发的kill信号;ppid=1427 表示这个进程的父进程;

OBJ_PID的opid=1343 表示这个进程被kill了。

如果只想检测某一个进程是否被kill了,可以利用系统调用的参数,以kill系统调用为例,第一个参数就是被kill的进程的pid,所以可以通过如下命令只检测某一个进程是被谁kill了。
#auditctl -D //清空规则
#auditctl -a exit,always -S kill -F a0=0x6e9

-F参数表示额外匹配,这里选择匹配系统调用的第一个参数,参数内容是要监控进程的PID(这里要用16进制)。

阅读(18818) | 评论(4) | 转发(1) |
给主人留下些什么吧!~~

瀚海书香2016-02-04 17:26:08

zhaowinvic:额,不小心人肉到了。。。这个问题有进展吗?我也遇到这个问题了,生产环境频繁宕机

目前只能规避,在当前的centos7.1上,包括如下规避的地方:
1、docker 的coredump位置不指定,docker中程序coredump可能引起物理机crash,需要指定物理机的一个目录,专门放coredump
2、文件系统的自动缩容会引起crash,docker的storage参数中,增加nodiscard

回复 | 举报

zhaowinvic2016-01-20 10:12:33

瀚海书香:我擦,这都可以???那个BUG的确是我提的

额,不小心人肉到了。。。这个问题有进展吗?我也遇到这个问题了,生产环境频繁宕机

回复 | 举报

瀚海书香2016-01-14 11:20:25

zhaowinvic:您好,请问一下 https://bugs.centos.org/view.php?id=9080 这个 bug 是您提的吗?

我擦,这都可以???那个BUG的确是我提的

回复 | 举报

zhaowinvic2015-12-29 13:39:12

您好,请问一下 https://bugs.centos.org/view.php?id=9080 这个 bug 是您提的吗?