我对 Linux 管理还很陌生。我的问题是,有没有办法检查日志文件或任何文件,了解我的进程如何收到 TERM 信号或被终止。我们能知道是谁以管理员身份终止了正在运行的进程吗?可能是因为另一个管理员进行了一些系统更新?
答案1
您可以使用审计来审计 kill 的系统调用。编辑文件 /etc/audit/audit.rules (EL6)(或 /etc/audit/rules.d/audit.rules(EL7))并添加类似以下内容的内容
-a entry,always -F arch=b64 -S kill -k catch_kill
重新启动 auditd
service auditd restart
注意:您需要执行EL7 重新启动 auditd也。
现在您可以在审计日志中搜索标记的条目catch_kills
ausearch -k catch_kills
并获得这样的条目,它可能会告诉您您想知道的内容。
时间->2016 年 9 月 4 日星期日 19:05:54 类型=OBJ_PID 消息=审核(1473012354.105:6138):opid=3151 oauid=1000 ouid=0 oses=619 obj=unconfined_u:unconfined_r:unconfined_t:s0-s0:c0.c1023 ocomm="sleep" 类型=SYSCALL 消息=审核(1473012354.105:6138):arch=c000003e syscall=62 成功=是 退出=0 a0=c4f a1=f a2=0 a3=7ffd235ac0d0 项目=0 ppid=3046 pid=3050 auid=1000 uid=0 gid=0 euid=0 suid=0 fsuid=0 egid=0 sgid=0 fsgid=0 tty=pts0 ses=619 comm="bash" exe="/usr/bin/bash" subj=unconfined_u:unconfined_r:unconfined_t:s0-s0:c0.c1023 key="catch_kills"
关于 EL 审计系统的大量文献资料Red Hat 网站