nohup 本身不会“无日志”,它只是让进程忽略 SIGHUP 并在没有重定向时默认把输出写到 nohup.out。
如果你发现“没有日志”,通常是下面几种原因导致的。
例如:
nohup python app.py > /dev/null 2>&1 &
这样:
/dev/null/dev/null✅ 结果:完全无日志(这是正常的)
有些程序:
例如:
nohup myservice &
但 myservice 日志在:
/var/log/myservice.log
✅ nohup.out 可能是空的
cd /tmp
nohup python app.py &
日志在:
/tmp/nohup.out
如果你后来在别的地方找,当然找不到。
✅ 检查方式:
ls -l nohup.out
pwd
如果启动目录不可写(如 / 或某些系统目录),nohup 会尝试写到:
$HOME/nohup.out
如果 $HOME 也不可写 → 直接丢弃输出
如果程序启动即退出:
nohup.out 可能为空或不存在✅ 排查:
jobs
ps aux | grep 程序名
& 但 shell 退出太早(不常见)ssh user@host "nohup python app.py &"
如果 SSH 立刻断开,某些环境会杀进程。
✅ 更稳妥:
ssh user@host "nohup python app.py > app.log 2>&1 &"
nohup python app.py > app.log 2>&1 &
setsid(更稳)setsid python app.py > app.log 2>&1 &
tail -f app.log
nohup 不是没日志,而是:日志去了你没看的地方,或被你重定向丢了,或程序根本没写。
如果你愿意,可以把你的**具体命令 + 运行环境(Linux / Mac / 容器)**发出来,我可以直接帮你定位。