在 CentOS 上使用 nohup 运行程序时,日志突然“断掉”或不继续写入,通常不是 nohup 本身的问题,而是下面几类原因最常见。我按出现频率给你梳理一下,并给出排查和解决办法。
nohup 只是“忽略 SIGHUP”,不代表程序不会退出。
检查:
ps -ef | grep 你的程序
如果进程不在了:
看系统日志:
dmesg | grep -i kill
journalctl -xe
很多人这样写:
nohup python app.py > log.txt &
但程序报错是写到 stderr,结果:
✅ 正确写法:
nohup python app.py > log.txt 2>&1 &
或
nohup python app.py >> log.txt 2>&1 &
CentOS 默认有 logrotate,如果:
现象:
ls -l 看到文件大小不变lsof | grep log解决:
copytruncatedf -h
df -i
磁盘满时:
特别是:
现象:
解决:
python -u app.py
或程序中显式 flush
如果你:
&Ctrl + Z 没 bg仍可能断。
✅ 推荐组合:
nohup 命令 >> log 2>&1 &
disown
nohup your_command >> app.log 2>&1 &
或更好:
setsid your_command >> app.log 2>&1 &
在 CentOS 7+:
systemdsupervisord比 nohup 稳定得多。
ps -ef | grep 程序
lsof | grep log
df -h
df -i
tail -f app.log
如果你愿意,可以把:
发出来,我可以直接帮你定位是哪一条原因。