在 Linux 里用 nohup 跑程序时,日志权限问题通常出现在几种典型场景。下面按「常见原因 → 解决办法」给你系统梳理一下。
nohup python app.py > app.log 2>&1 &
报错或日志没内容:
permission denied: app.log
app.log 所在目录没有写权限app.log 已存在,但属主不是你# 1. 看目录权限
ls -ld .
# 2. 换到有写权限的目录
mkdir -p ~/logs
nohup python app.py > ~/logs/app.log 2>&1 &
# 3. 或给权限(不推荐长期这么干)
touch app.log
chmod 664 app.log
✅ 推荐:日志统一放 ~/logs 或 /var/log/your_app
sudo nohup python app.py > /var/log/app.log 2>&1 &
普通用户:
cat /var/log/app.log
# Permission denied
sudo chmod 644 /var/log/app.log
sudo chown root:yourgroup /var/log/app.log
sudo chmod 640 /var/log/app.log
sudo useradd -m appuser
sudo -u appuser nohup python app.py > /home/appuser/app.log 2>&1 &
* * * * * nohup python app.py >> /var/log/app.log
可能失败,因为:
✅ 解决:
* * * * * /usr/bin/python /path/app.py >> /home/user/app.log 2>&1
sudo nohup command > log 2>&1 &
⚠️ 实际是:
sudo 提权nohup 在 root 下跑✅ 正确写法:
sudo bash -c 'nohup python app.py > /var/log/app.log 2>&1 &'
[Service]
User=appuser
ExecStart=/usr/bin/python /path/app.py
StandardOutput=append:/var/log/app.log
StandardError=append:/var/log/app.err
sudo systemctl daemon-reload
sudo systemctl start yourapp
✅ 权限清晰
✅ 自动重启
✅ 日志可控
whoami
ls -l app.log
ls -ld .
ps -ef | grep nohup
如果你愿意,可以把具体报错信息或命令贴出来,我可以直接帮你定位是哪一类权限问题。