nohup 本身不会主动设置日志文件权限,它只是把输出重定向到文件(默认 nohup.out)。
日志文件的权限,取决于 创建文件时的 umask 和启动用户。
下面按常见场景说明怎么改 / 怎么控制权限。
如果日志已经生成(如 nohup.out):
chmod 644 nohup.out
chown user:group nohup.out
⚠️ 注意:
touch app.log
chmod 640 app.log
nohup java -jar app.jar > app.log 2>&1 &
这样日志权限就是你自己设的。
umask 027
nohup ./start.sh > app.log 2>&1 &
常见 umask:
022 → 644(默认)027 → 640077 → 600✅ 只对本次 shell 会话有效
默认:
-rw-r--r-- 1 user user nohup.out
如果你不想要 nohup.out:
rm nohup.out
nohup ./app > app.log 2>&1 &
或直接丢弃:
nohup ./app > /dev/null 2>&1 &
✅ 不要用 nohup.out
✅ 明确指定日志路径
✅ 日志权限控制在 640 或 600
✅ 用 logrotate 管理权限和切割
示例:
/var/log/app/app.log {
create 640 app app
daily
rotate 7
missingok
notifempty
}
❌ nohup 不能“改日志权限”
❌ 改了权限后程序也不会自动重新设置
❌ root 启动的日志,普通用户看不到
如果你愿意,可以告诉我:
我可以给你一条最合适的具体命令。