好端端的进程,为什么说没就没呢...

113 阅读3分钟

起因是有个进程在某点开始跑,没跑完就gg了,查日志打印了killed的关键词

image.png

查了一番才知道,原来在机器各方面资源过高的情况下,系统会killed掉一些占用资源过高的进程,通过下面命令可以查看系统killed掉的日志

dmesg | egrep -i -B100 'killed process'

image.png

接下来好好分析下这个进程如果能减少占用资源,优化下脚本过程


另外了解下dmesg命令的用法及应用场景

dmesg 是一个在 Unix 和类 Unix 操作系统(如 Linux)中常用的命令,用于显示或控制内核环缓冲区(kernel ring buffer)的内容。内核环缓冲区存储了系统启动和运行过程中内核产生的消息,包括硬件检测、驱动加载、系统错误等信息。

用法

dmesg 命令的基本用法如下:

dmesg

这个命令会输出内核环缓冲区中的所有消息。为了方便阅读,可以使用以下选项:

  • -H--human:以人类可读的格式显示消息。
  • -T--ctime:显示带有时间戳的消息。
  • -x--decode:解码消息中的符号。
  • -k--kernel:仅显示内核消息。
  • -l--level:按级别过滤消息(如 emerg, alert, crit, err, warn, notice, info, debug)。
  • -c--clear:清除内核环缓冲区中的消息。
  • -r--raw:显示原始消息(未解码)。
  • -S--size:设置内核环缓冲区的大小。

例如,显示带有时间戳的消息并过滤出错误级别的消息:

dmesg -T -l err

应用场景

dmesg 命令在以下场景中非常有用:

  1. 系统启动问题排查:当系统无法正常启动时,可以使用 dmesg 查看启动过程中的内核消息,帮助定位问题。

  2. 硬件检测和驱动加载:在系统启动或插入新硬件时,dmesg 可以显示硬件检测和驱动加载的信息,帮助确认硬件是否被正确识别。

  3. 系统错误和警告:当系统出现错误或警告时,dmesg 可以显示相关的内核消息,帮助诊断问题。

  4. 性能监控:通过查看 dmesg 输出的消息,可以了解系统的性能状况,如内存使用、磁盘 I/O 等。

  5. 调试和开发:开发人员可以使用 dmesg 查看内核模块或驱动程序的调试信息,帮助调试和开发工作。

  6. 安全审计dmesg 可以记录系统中的一些关键事件,如内核模块加载、系统调用等,有助于安全审计和入侵检测。

示例

以下是一些常见的 dmesg 命令示例:

  1. 显示所有内核消息:

    dmesg
    
  2. 显示带有时间戳的内核消息:

    dmesg -T
    
  3. 仅显示错误级别的消息:

    dmesg -l err
    
  4. 清除内核环缓冲区中的消息:

    dmesg -c
    

通过这些用法和应用场景,dmesg 命令可以帮助用户和系统管理员更好地了解和维护系统的运行状态。