nohup 日志中断(即 nohup.out 或重定向日志不再更新、变空、截断、停止输出)是常见的运维问题,通常不是 nohup 本身“断了”,而是进程、输出缓冲、文件系统或运行环境发生了变化。下面按最常见原因 → 排查方法 → 解决办法来说明。
这是最常见的情况。
表现:
ps 看不到进程nohup.out 不再增长排查:
ps -ef | grep 你的程序
echo $?
或看退出码:
jobs -l
解决:
dmesg | grep -i kill 看是否被 OOM kill非常容易踩坑
nohup.out表现:
常见于:
解决:
python -u main.py
PYTHONUNBUFFERED=1
ConsoleAppenderLog4j 设置 immediateFlush=true你可能:
nohup xxx > log.txt 2>&1
但后来:
> log.txt
或脚本里又 > log.txt
结果:
解决:
>> 追加> 正在写的日志Linux 中:
表现:
ls nohup.out # 不存在
但 du -sh /proc/PID/fd
排查:
ls -l /proc/PID/fd
解决:
logrotate 正确轮转虽然 nohup 本应避免,但:
&错误示例:
nohup python main.py
# 没加 &
正确:
nohup python main.py > out.log 2>&1 &
表现:
df -h 正常但 df -i 满排查:
df -h
df -i
例如:
日志写入直接失败。
✅ 标准写法:
nohup your_app >> app.log 2>&1 &
✅ 更好:用 setsid
setsid your_app >> app.log 2>&1 < /dev/null &
✅ 生产级:
systemdsupervisorpm2(Node)logrotateps -ef | grep 程序
ls -l /proc/PID/fd
df -h
df -i
tail -f app.log
如果你愿意,可以告诉我:
我可以直接帮你定位是哪一种原因。