nohup 日志没有权限,通常不是 nohup 本身的问题,而是文件权限、用户身份或目录限制导致的。下面按常见原因给你系统排查一下。
例如:
nohup java -jar app.jar > nohup.out 2>&1 &
如果 nohup.out 之前是由 root 创建的,而你当前是普通用户:
ls -l nohup.out
-rw-r--r-- 1 root root 12345 nohup.out
那么你再运行 nohup 就没权限写入。
✅ 解决方式:
# 删除旧日志(确认不需要)
rm nohup.out
# 或改权限
sudo chown $USER:$USER nohup.out
nohup 默认在当前目录生成 nohup.out
如果你在:
/root
/usr
/opt
而这些目录你没权限:
touch test.txt
# 报 Permission denied
✅ 解决方式:
cd ~
nohup java -jar app.jar > nohup.out 2>&1 &
nohup java -jar app.jar > /home/user/logs/nohup.out 2>&1 &
sudo nohup java -jar app.jar > nohup.out &
此时:
nohup.out 所在目录属于普通用户root 虽然能写,但如果父目录权限不足,也可能失败。
✅ 推荐写法:
sudo sh -c 'nohup java -jar app.jar > /var/log/app.log 2>&1 &'
查看:
ls -ld 目录名
常见限制:
drwxr-xr-x:其他人不可写chattr +i:文件被锁定检查是否被锁:
lsattr nohup.out
解锁:
sudo chattr -i nohup.out
df -h
磁盘满时也会报:
Permission denied
getenforce
如果是 Enforcing,可能限制写入。
临时验证:
sudo setenforce 0
不要依赖默认 nohup.out
mkdir -p /home/user/logs
nohup java -jar app.jar > /home/user/logs/app.log 2>&1 &
或:
nohup java -jar app.jar >> app.log 2>&1 &
你可以逐条确认:
whoami 是谁ls -l nohup.out 是谁的touch test 能不能成功df -h如果你愿意,可以把下面信息贴出来,我可以精准判断:
whoami
pwd
ls -ld .
ls -l nohup.out