nohup 日志为空,通常不是 nohup 本身的问题,而是程序输出方式 / 缓冲 / 重定向的问题。下面按常见原因逐步说明。
很多程序(尤其是 Python、C、Java)在非终端输出时会启用全缓冲:
结果:
nohup python app.py > log.txt 2>&1 &
如果 app.py 没有频繁 flush,log.txt 可能长时间为空。
✅ 解决办法:
python -u app.py > log.txt 2>&1 &
或代码里:
print("xxx", flush=True)
nohup python app.py &
此时:
nohup.outlog.txt 看,那就是空的✅ 正确写法
nohup python app.py > log.txt 2>&1 &
有些程序:
✅ 排查:
ps -ef | grep app
strace -p PID
例如:
nohup sh -c "python app.py" > log.txt &
可能重定向位置不对。
✅ 推荐写法
nohup python app.py > log.txt 2>&1 &
默认:
nohup command
→ 输出到 nohup.out
但你可能在看:
log.txtnohup.out✅ 检查
ls -l nohup.out
pwd
如果程序立刻退出:
✅ 检查退出状态
echo $?
✅ 检查
df -h
df -i
nohup your_command >> run.log 2>&1 &
实时查看:
tail -f run.log
如果你愿意,可以告诉我:
我可以直接帮你定位是哪一条原因。