nohup 日志为空,通常不是 nohup 本身的问题,而是程序输出方式或启动方式导致的。下面按常见原因逐一说明。
最常见原因。
✅ 验证:
echo "test" >> nohup.out
如果这样能写进去,说明文件本身没问题。
你以为在 nohup.out,其实不在。
常见写法:
nohup python app.py > log.txt 2>&1 &
此时:
nohup.out 是空的log.txt✅ 检查:
ls -l
ps -ef | grep app.py
这是“日志为空但程序在跑”的典型原因。
nohup.out 一直 0 字节nohup python -u app.py > nohup.out 2>&1 &
或代码里:
print("xxx", flush=True)
nohup java -Djava.util.logging.SimpleFormatter.buffer=false ...
fflush(stdout)setvbuf(stdout, NULL, _IONBF, 0)nohup 只保证“忽略挂断信号”,不保证程序一定能跑。
例如:
nohup ./a.out &
如果 a.out 立刻崩溃:
nohup.out 可能为空✅ 查看:
cat nohup.out
jobs
ps -ef | grep a.out
某些程序(尤其是 daemon):
close(1)freopen("/dev/null")结果:
nohup.out 永远为空✅ 解决:
不同目录会有不同 nohup.out。
✅ 确认:
pwd
ls -l nohup.out
lsof -p <pid> | grep nohup
nohup python -u app.py > app.log 2>&1 &
然后:
tail -f app.log
如果你愿意,可以把:
nohup.out 大小ps 输出贴出来,我可以精准判断是哪一种原因。