在 CentOS 上用 nohup 启动程序时,出现**“日志权限拒绝 / Permission denied”,通常不是 nohup 本身的问题,而是日志文件或目录的写权限**问题。下面按常见原因逐一说明:
例如:
nohup java -jar app.jar > /var/log/app.log 2>&1 &
如果 /var/log/app.log 属于 root,而你是普通用户,就会报:
bash: /var/log/app.log: Permission denied
✅ 解决:
sudo touch /var/log/app.log
sudo chown $USER:$USER /var/log/app.log
或改到自己有权限的目录:
nohup java -jar app.jar > ~/app.log 2>&1 &
nohup app > /data/logs/app.log 2>&1 &
如果 /data/logs 不存在,也会报权限或找不到文件错误。
✅ 解决:
mkdir -p /data/logs
chown -R $USER:$USER /data/logs
sudo nohup app > /home/user/app.log 2>&1 &
sudo 后以 root 身份写,可能没问题;但有时 SELinux 或家目录权限会拦。
✅ 建议:
/var/log/app/)CentOS 默认开启 SELinux,即使 ls -l 显示有权限,也可能被拦截。
getenforce
如果是 Enforcing,可看审计日志:
sudo ausearch -m avc -ts recent
sudo setenforce 0
sudo chcon -t var_log_t /var/log/app.log
或关闭 SELinux(生产不推荐)
如果不指定重定向:
nohup app &
会在当前目录生成 nohup.out
如果:
nohup.out 已存在但属主不是你都会失败。
✅ 解决:
rm nohup.out
# 或
nohup app > my.log 2>&1 &
df -h
df -i
磁盘满或 inode 满也会表现成“写不进去”。
mkdir -p /var/log/myapp
chown $USER:$USER /var/log/myapp
nohup /path/to/app \
> /var/log/myapp/app.log 2>&1 &
CentOS 上 nohup 日志权限拒绝,99% 是“日志文件/目录写权限”或“SELinux”问题,不是 nohup 的锅。
如果你愿意,可以把完整报错命令 + 报错信息贴出来,我可以精确帮你定位。