个人技术分享

在Ubuntu系统中,要查看进程被杀掉的记录,可以使用以下命令和方法:

  1. 查看系统日志
    使用grep命令搜索/var/log/syslog/var/log/messages文件中的相关条目。例如:

    grep -i 'killed process' /var/log/syslog
    

    或者

    grep -i 'killed.*process' /var/log/messages
    

    -i 参数表示不区分大小写。
    /var/log/messages 和 /var/log/syslog 都是用来存储系统日志文件的,syslog文件通常只包含系统日志信息,而messages文件除了包含系统日志外,还可能包含由其他应用程序或服务生成的消息

  2. 使用journalctl查看日志
    如果你的系统使用systemd,可以使用journalctl来获取进程相关的日志:

    journalctl -k | grep -i 'killed'
    

    -k 参数表示只显示内核消息。

  3. 查看内核崩溃日志
    如果进程因为内核崩溃而被杀,可以查看崩溃日志:

    less /var/crash/*
    
  4. 查看审计日志
    如果系统启用了审计(auditd),可以使用ausearch命令来搜索相关记录:

    ausearch -k process-termination
    
  5. 查看进程退出代码
    有时进程的退出代码可以提供为何进程终止的线索,可以使用ps命令查看:

    ps -p [PID] -o etime= | grep -v '^[0]*$'
    

    这里[PID]是进程的ID。ps命令显示进程的状态信息,-o etime=指定只输出进程的运行时间。

  6. 查看OOM日志
    如果进程是因为内存不足被杀,可以查看OOM日志:

    grep -i 'oom' /var/log/syslog
    

    或者

    grep -i 'oom' /var/log/messages
    
  7. 查看进程的oom_adj或oom_score_adj
    这些文件可以提供OOM killer相关信息:

    cat /proc/[PID]/oom_adj
    

    或者

    cat /proc/[PID]/oom_score_adj
    

    替换[PID]为进程的ID。

  8. 使用dmesg查看内核消息
    dmesg命令可以查看内核记录的消息:

    dmesg | grep -i 'killed'
    

请注意,如果日志文件很大,使用lessmore等工具可以逐步查看日志内容。另外,由于日志轮换,旧的日志可能会被删除或压缩,因此可能无法找到太久之前的记录。