nohup 日志不输出,常见原因和对应排查方法如下:
程序(尤其是 Python、Java、C++)标准输出是有缓冲的,不会立刻写文件。
现象
nohup xxx > out.log 2>&1 &out.log 一开始是空的解决
python -u app.py > out.log 2>&1 &
PYTHONUNBUFFERED=1 nohup python app.py > out.log 2>&1 &
fflush 或 setvbufjava -Djava.util.logging.SimpleFormatter.buffer=false ...
程序把日志写到了:
排查
ls -l /proc/<pid>/fd
看 1(stdout)、2(stderr)指向哪
错误示例:
nohup python app.py & > out.log
> 在 & 后面,没生效
✅ 正确:
nohup python app.py > out.log 2>&1 &
nohup 默认只保证不挂断,日志位置取决于你:
nohup.out~检查:
ls -l nohup.out
ls -l ~/nohup.out
程序启动失败,日志自然没内容
检查
jobs
ps -ef | grep xxx
df -h
touch out.log
nohup python -u app.py > app.log 2>&1 &
或:
setsid python -u app.py > app.log 2>&1 < /dev/null &
实时看日志:
tail -f app.log
如果你愿意,可以把你的启动命令 + 程序语言贴出来,我可以直接帮你定位是哪一条原因。