在 Debian 上用 nohup 却“没有日志”,通常不是 nohup 本身坏了,而是日志去错了地方或被 shell / 重定向吃掉了。下面按常见原因逐一说明。
nohup.outnohup 的行为是:
nohup.out所以很多人以为“没日志”,其实是:
nohup ./app > /dev/null 2>&1 &
✅ 日志被你主动丢掉了
nohup.out 生成在 当前工作目录:
cd /tmp
nohup ./app &
→ 日志在 /tmp/nohup.out
如果你后来 cd 走了,就找不到。
✅ 解决:
ls -l nohup.out
pwd
或启动前显式指定:
nohup ./app > /var/log/app.log 2>&1 &
很多程序:
例如:
nohup nginx &
→ nginx 不会写 nohup.out
✅ 查日志应看:
/var/log/nginx/
journalctl -u nginx
如果你在 systemd 的 session 里:
✅ 正确方式是用 service:
systemctl start yourapp
journalctl -u yourapp
常见现象:
✅ 检查:
echo $?
jobs
ps aux | grep app
很多语言(Python / C / Java):
✅ Python 示例:
nohup python -u app.py > app.log 2>&1 &
-u = 无缓冲
nohup ./yourapp \
> /var/log/yourapp.log \
2>&1 \
< /dev/null &
或更好:
setsid ./yourapp > /var/log/yourapp.log 2>&1 < /dev/null &
Debian 上 nohup “没日志”,99% 不是 nohup 的问题,而是:
- 日志被重定向掉了
- 写在别的地方
- 程序根本不输出
- 或你找错目录
如果你愿意,可以把具体命令 + 程序类型发我,我可以直接帮你定位。