在 Debian 下使用 nohup 运行程序时,日志权限问题通常出现在以下几种场景。下面按常见问题和解决方法说明。
nohup.out 无法写入
nohup: failed to open 'nohup.out': Permission denied
重定向日志无权限
nohup command > /var/log/app.log 2>&1 &
报错:
bash: /var/log/app.log: Permission denied
日志文件属主不对
nohup 本身不处理权限nohup.out 默认创建在当前工作目录nohup command > ~/app.log 2>&1 &
或
mkdir -p ~/logs
nohup command > ~/logs/app.log 2>&1 &
✅ 优点:不会有权限问题
❌ 缺点:不在系统日志目录
sudo touch /var/log/app.log
sudo chown $USER:$USER /var/log/app.log
nohup command > /var/log/app.log 2>&1 &
适用于:
sudo -u appuser nohup command > /home/appuser/app.log 2>&1 &
避免:
install 创建带权限的日志目录sudo install -d -o appuser -g appuser /var/log/app
nohup command > /var/log/app/app.log 2>&1 &
如果你不重定向:
nohup command &
会生成:
nohup.out
⚠️ 注意:
✅ 推荐写法:
nohup command > app.log 2>&1 &
如果你是服务器长期运行程序,不建议 nohup。
[Unit]
Description=My App
[Service]
User=appuser
ExecStart=/path/to/command
StandardOutput=append:/var/log/app.log
StandardError=append:/var/log/app.log
[Install]
WantedBy=multi-user.target
sudo systemctl daemon-reload
sudo systemctl start myapp
✅ 自动管理权限、日志、重启
whoami
pwd
ls -l app.log
ls -ld /var/log
sudo -u 用户名 touch /path/log
如果你能贴出:
我可以给你精准修复方案。