在 Debian 下使用 nohup 时“日志不生成”是一个很常见的问题,通常不是 nohup 本身坏掉了,而是标准输出/错误流向、shell 行为或程序本身导致的。下面按最常见原因逐一说明。
很多人这样写:
nohup python app.py &
然后发现没有 nohup.out。
✅ 原因
nohup 只在 标准输出是终端 时才默认生成 nohup.out就不会生成日志
✅ 正确写法
nohup python app.py > app.log 2>&1 &
即使你写了:
nohup ./program > out.log 2>&1 &
如果程序:
print / echo / log文件可能:
✅ 检查:
ls -l
cat app.log
比如:
nohup.out 可能:
✅ 排查:
nohup python app.py > app.log 2>&1 &
echo $?
jobs
如果:
/、/root、/usr 下运行nohup 会尝试写 nohup.out 失败
✅ 解决:
cd ~
nohup ./app > app.log 2>&1 &
或指定路径:
nohup ./app > /tmp/app.log 2>&1 &
如果你是:
systemctl start xxxservice xxx start那 nohup 完全不生效,日志在:
journalctl -u 服务名
Debian 默认 /bin/sh 是 dash
有些写法在 bash 可用,在 dash 不行:
❌ 不安全:
nohup python app.py &
✅ 推荐:
nohup python app.py > app.log 2>&1 &
nohup /绝对路径/程序 \
> /var/log/app.log 2>&1 &
或后台守护:
setsid /绝对路径/程序 > /var/log/app.log 2>&1 &
pwd
whoami
ls -l
ps aux | grep 程序名
cat nohup.out
你可以直接贴:
我可以帮你精准定位为什么没生成日志。