Linux 服务器进程异常退出,如何从日志判断原因
进程异常退出不一定是服务崩了,也可能是 OOM、配置错误、依赖失败或脚本异常。本文从系统日志、服务日志和应用日志三个层面说明如何判断。
进程突然退出时,第一反应通常是“又挂了”。但真正要问的是:它为什么挂。是系统杀掉的,还是程序自己退出的?是启动参数错了,还是资源不够?日志能给出很大一部分答案。
先看有没有被系统杀掉
dmesg -T | grep -i 'killed process\|out of memory'
如果有 OOM 记录,说明系统内存不够,进程不是自己“想走”,而是被内核杀掉了。
再看服务日志
journalctl -u 服务名 -n 100 --no-pager
如果服务是 systemd 管理的,journal 日志通常会写得比较直接。比如参数错误、文件找不到、端口占用、权限不够等。
再看应用自己的日志
网站、队列、守护进程和定时任务,往往在自己的日志里会写更具体的原因。
一张判断表
| 线索 | 更可能原因 |
|---|---|
| OOM 记录 | 内存不足 |
| `exit code 1` | 程序自身报错 |
| `address already in use` | 端口冲突 |
| `permission denied` | 权限问题 |
| `file not found` | 路径或依赖缺失 |
不要忽略“反复退出”
进程如果几分钟内不断重启,通常不是偶然,而是某个固定问题没有解决。这个时候不要盲目加守护重启次数,而应继续看日志和启动参数。