在Linux系统中,记录进程被杀死的日志通常涉及到内核日志和系统日志。以下是一些基础概念和相关信息:
dmesg
命令查看内核日志。syslog
和journald
(在Systemd系统中)。SIGTERM
和SIGKILL
。dmesg
查看内核日志dmesg | grep "killed process"
journalctl
查看Systemd日志(适用于使用Systemd的系统)journalctl -xe | grep "killed process"
grep
查看 /var/log/messages
或 /var/log/syslog
grep "killed process" /var/log/messages
# 或者
grep "killed process" /var/log/syslog
原因:系统内存不足,内核启动OOM杀手杀死进程。
解决方法:
echo -17 > /proc/<pid>/oom_adj # 临时调整进程的OOM优先级
原因:其他进程发送了终止信号(如SIGTERM
或SIGKILL
)。
解决方法:
strace
跟踪进程的信号接收情况。strace -p <pid>
假设你想监控某个进程是否被杀死,并记录相关信息:
import os
import signal
import time
def log_kill_signal(signum, frame):
with open("/var/log/process_kill.log", "a") as log_file:
log_file.write(f"Process {os.getpid()} received signal {signum} at {time.ctime()}\n")
signal.signal(signal.SIGTERM, log_kill_signal)
signal.signal(signal.SIGKILL, log_kill_signal)
while True:
time.sleep(1)
这个脚本会在进程收到SIGTERM
或SIGKILL
信号时,将相关信息写入日志文件。
通过以上方法,你可以有效地监控和记录Linux系统中进程被杀死的情况,并根据日志信息进行相应的故障排查和优化。
领取专属 10元无门槛券
手把手带您无忧上云