温馨提示×

ubuntu nohup日志为何不生成

小樊
39
2026-10-06 17:51:46
栏目: 智能运维

在 Ubuntu 上使用 nohup 时“日志不生成”是一个常见但原因很多的问题。下面按最常见 → 较少见的顺序帮你排查。


一、最常见原因

1️⃣ 命令写法不对(重定向没生效)

很多人这样写:

nohup python app.py

但没有重定向输出,默认会写到:

nohup.out

如果你在 另一个目录 或 权限不足,就可能“看起来没生成”。

✅ 正确写法(推荐):

nohup python app.py > app.log 2>&1 &

说明:

  • >:标准输出
  • 2>&1:错误也写进去
  • &:后台运行

2️⃣ 当前目录没有写权限

如果你是:

cd /root
nohup python app.py > app.log &

但当前用户不是 root,就会失败。

✅ 检查:

pwd
ls -ld .
touch test.log

✅ 解决:

cd ~
nohup python app.py > ~/app.log 2>&1 &

3️⃣ 程序根本没启动(日志当然没有)

日志不生成,可能是因为:

  • 命令路径不对
  • Python 环境错误
  • 程序直接退出

✅ 检查进程:

ps aux | grep app.py

✅ 手动前台运行:

python app.py

看是否有报错。


二、nohup.out 去哪了?

4️⃣ nohup.out 在“启动时的目录”

如果你这样启动:

cd /opt/myproj
nohup python app.py &

日志在:

/opt/myproj/nohup.out

✅ 查找:

find / -name nohup.out 2>/dev/null

三、Shell / 终端问题

5️⃣ 使用了错误的 shell 或退出方式

如果你:

  • 直接关终端
  • 没用 &
  • 用 Ctrl + C

程序可能已死。

✅ 正确方式:

nohup command > log 2>&1 &
disown

或:

setsid python app.py > app.log 2>&1 &

四、systemd(更推荐)

如果你的程序要长期运行,不要用 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 &
  • [ ] 当前目录是否可写
  • [ ] 程序是否真的在运行
  • [ ] 是否找错目录(nohup.out)
  • [ ] 是否考虑改用 systemd

如果你愿意,可以把:

  • 你的 完整命令
  • Ubuntu 版本
  • 是否 root / 普通用户

发出来,我可以直接帮你定位。

0 踩