在 CentOS(以及大多数 Linux 系统)上,nohup 日志不实时刷新通常不是 nohup 本身的问题,而是标准输出缓冲机制导致的。下面分情况说明原因和解决办法。
所以:
nohup python app.py > nohup.out 2>&1 &
日志不会立刻出现,而是攒一批才写。
print("hello")
✅ 解决方式:
python -u app.py
或代码里:
print("hello", flush=True)
System.out.println 同样会被缓冲System.out 会延迟✅ 解决:
printf 默认全缓冲
✅ 解决:fflush(stdout);
或
stdbuf -oL ./app
-f❌
tail nohup.out
✅
tail -f nohup.out
vim / cat 看日志tail -F 或 less +Fstdbuf -oL -eL nohup your_command > nohup.out 2>&1 &
程序里定期 flush
✅ 是否用了 tail -f
✅ 程序是否真的在运行
✅ 输出是否被缓冲
✅ 是否写到了别的文件(如 2>)
如果你愿意,可以告诉我:
我可以直接给你精确可用的命令。