温馨提示×

nohup日志权限如何改

小樊
42
2026-09-21 17:54:59
栏目: 编程语言

nohup 本身不会主动设置日志文件权限,它只是把输出重定向到文件(默认 nohup.out)。
日志文件的权限,取决于 创建文件时的 umask 和启动用户。

下面按常见场景说明怎么改 / 怎么控制权限。


一、已存在的 nohup 日志文件改权限

如果日志已经生成(如 nohup.out):

chmod 644 nohup.out
chown user:group nohup.out

⚠️ 注意:

  • 只能改你自己有权限的文件
  • 改了之后,程序继续写日志,权限不会自动变回

二、启动时就控制日志权限(推荐)

方式 1:手动指定日志文件 + 提前建好

touch app.log
chmod 640 app.log

nohup java -jar app.jar > app.log 2>&1 &

这样日志权限就是你自己设的。


方式 2:用 umask 控制新建日志权限

umask 027
nohup ./start.sh > app.log 2>&1 &

常见 umask:

  • 022 → 644(默认)
  • 027 → 640
  • 077 → 600

✅ 只对本次 shell 会话有效


三、nohup.out 权限太开放怎么办?

默认:

-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 启动的日志,普通用户看不到


如果你愿意,可以告诉我:

  • 用的什么程序(Java / Python / Shell)
  • 日志路径
  • 谁在读写日志

我可以给你一条最合适的具体命令。

0 踩