在 Ubuntu 上使用 nohup 时“日志不生成”是一个常见但原因很多的问题。下面按最常见 → 较少见的顺序帮你排查。
很多人这样写:
nohup python app.py
但没有重定向输出,默认会写到:
nohup.out
如果你在 另一个目录 或 权限不足,就可能“看起来没生成”。
✅ 正确写法(推荐):
nohup python app.py > app.log 2>&1 &
说明:
>:标准输出2>&1:错误也写进去&:后台运行如果你是:
cd /root
nohup python app.py > app.log &
但当前用户不是 root,就会失败。
✅ 检查:
pwd
ls -ld .
touch test.log
✅ 解决:
cd ~
nohup python app.py > ~/app.log 2>&1 &
日志不生成,可能是因为:
✅ 检查进程:
ps aux | grep app.py
✅ 手动前台运行:
python app.py
看是否有报错。
如果你这样启动:
cd /opt/myproj
nohup python app.py &
日志在:
/opt/myproj/nohup.out
✅ 查找:
find / -name nohup.out 2>/dev/null
如果你:
&Ctrl + C程序可能已死。
✅ 正确方式:
nohup command > log 2>&1 &
disown
或:
setsid python app.py > app.log 2>&1 &
如果你的程序要长期运行,不要用 nohup,用 systemd。
sudo nano /etc/systemd/system/myapp.service
[Unit]
Description=My App
[Service]
ExecStart=/usr/bin/python /opt/myproj/app.py
WorkingDirectory=/opt/myproj
Restart=always
StandardOutput=append:/var/log/myapp.log
StandardError=append:/var/log/myapp.log
[Install]
WantedBy=multi-user.target
sudo systemctl daemon-reload
sudo systemctl start myapp
> log 2>&1 &如果你愿意,可以把:
发出来,我可以直接帮你定位。