在 Ubuntu 上使用 nohup 时,日志“不输出”通常不是 nohup 本身的问题,而是输出被缓冲、重定向位置不对,或被系统/journal接管了。下面按最常见原因逐一说明。
nohup python app.py &
nohup.out 里一开始什么都没有,过很久才出现,或程序退出后才出现。
nohup python -u app.py > nohup.out 2>&1 &
或代码里:
print(x, flush=True)
nohup java -Djava.util.logging.config.file=logging.properties ...
或加:
stdbuf -oL -eL java App
nohup ./app.sh
然后关掉终端,发现“没日志”
nohup 默认会把输出写到 当前目录的 nohup.outcd 到了没权限或不在预期目录,就会“看起来没日志”nohup ./app.sh > app.log 2>&1 &
常见位置:
nohup.out
./app.log
~/nohup.out
检查:
ls -l nohup.out
tail -f nohup.out
确认方式:
./your_program
直接运行看有没有输出。
如果直接运行也没输出:
如果你是用:
service xxx start
# 或
systemctl start xxx
那 nohup 根本不生效,日志在:
journalctl -u xxx
df -h
touch nohup.out
nohup ./app > app.log 2>&1 &
或:
setsid ./app > app.log 2>&1 < /dev/null &
-u / stdbuftail -f 看了正确文件如果你愿意,可以贴出:
nohup.out我可以直接帮你定位是哪一类问题。