nohup 日志突然停止写入,通常不是 nohup 本身的问题,而是程序输出、缓冲、重定向或系统资源的问题。下面按最常见 → 较少见的顺序给你排查思路(适用于 CentOS 6/7/8)。
nohup.out 不再增长很多程序(尤其是 Python、Java、C++)行缓冲 / 全缓冲,不是实时刷盘。
# 查看进程是否还在
ps -ef | grep your_program
# 查看文件是否还在被写入(实时)
tail -f nohup.out
python -u your_script.py
或
sys.stdout.flush()
java -Djansi.force=true ...
setvbuf(stdout, NULL, _IONBF, 0);
nohup python app.py > nohup.out &
后来手动:
rm nohup.out
或
> nohup.out
ls -i nohup.out
lsof -p <PID> | grep nohup
>> nohup.out 2>&1
或
nohup your_cmd >> app.log 2>&1 &
df -h
write() 系统调用阻塞du -sh *
清理日志或扩容。
ps -ef | grep your_program
tail -n 50 nohup.out
dmesg | tail
journalctl -xe
常见原因:
nohup ./app &
但 app 内部:
lsof -p <PID> | grep log
如果你在:
有可能 stdout 被 systemd 接管。
不要依赖 nohup.out,而是明确日志文件:
nohup ./app >> /var/log/app.log 2>&1 &
nohup ./app >> app.log 2>&1 &
screen / tmuxsystemd serviceps -ef | grep app
df -h
lsof -p <PID> | grep log
tail -f app.log
如果你愿意,可以把下面信息发我,我可以直接帮你定位原因:
nohup.out 最后几行我可以一步一步帮你查。