nohup 本身不会“故意”改权限,但日志文件权限问题通常出现在这些场景。下面按常见原因 + 解决办法说明。
nohup.out 无法写入(Permission denied)nohup python app.py > run.log 2>&1 &
# Permission denied: run.log
✅ 解决:
# 查看权限
ls -l run.log
# 修改属主
sudo chown $USER:$USER run.log
# 或修改权限
chmod 644 run.log
✅ 更稳妥:
rm run.log
nohup python app.py > run.log 2>&1 &
nohup.out 或日志变成 root 属主。
✅ 解决:
sudo chown -R $USER:$USER .
⚠️ 不建议混用 root / 普通用户跑同一程序
nohup xxx > /opt/app/logs/app.log &
✅ 检查:
ls -ld /opt/app/logs
✅ 解决:
sudo chmod 755 /opt/app/logs
sudo chown $USER:$USER /opt/app/logs
sudo nohup python app.py > app.log &
→ app.log 属于 root
✅ 正确方式:
sudo bash -c 'nohup python app.py > app.log 2>&1 &'
或:
sudo chown $USER app.log
某些系统 umask = 077,日志只有 owner 能看
✅ 查看:
umask
✅ 启动时指定:
umask 022
nohup xxx > app.log 2>&1 &
✅ 指定日志路径 + 提前建好日志
touch app.log
chmod 644 app.log
nohup ./app > app.log 2>&1 &
✅ 用日志轮转(避免权限+磁盘问题)
nohup ./app >> app.log 2>&1 &
配合 logrotate
✅ 避免直接用 nohup.out
nohup.out 容易权限混乱、难以管理
whoami
ls -l 日志文件
ls -ld 目录
df -h
如果你能贴出:
ls -l 日志文件我可以直接帮你定位是哪一种权限问题。