温馨提示×

centos nohup日志如何设权限

小樊
43
2026-09-03 03:42:28
栏目: 智能运维

在 CentOS(及其他 Linux 系统)中,使用 nohup 运行程序时,默认会把输出写入 nohup.out,日志文件的权限取决于:

  1. 当前 umask
  2. 你重定向到的日志文件是否已存在
  3. 你以哪个用户运行

下面分几种常见情况和做法说明。


一、nohup 默认日志权限

nohup command &

等价于:

nohup command > nohup.out 2>&1 &

默认权限

  • nohup.out 不存在:
    权限由 umask 决定(常见为 644
  • 若已存在:
    不会修改权限,继续使用原有权限

查看 umask:

umask

二、手动指定日志并设置权限(推荐)

1️⃣ 先创建日志文件并设置权限

touch /var/log/myapp.log
chmod 640 /var/log/myapp.log
chown appuser:appgroup /var/log/myapp.log

2️⃣ 使用 nohup 重定向

nohup command >> /var/log/myapp.log 2>&1 &

✅ 好处:权限可控,不会自动变成 644


三、通过 umask 控制新建日志权限

如果你希望 nohup.out 自动是某种权限:

umask 027
nohup command &
  • umask 027 → 新文件权限 640
  • umask 077 → 新文件权限 600

⚠️ 只对新创建文件有效


四、以特定用户运行并设置权限(生产推荐)

sudo -u appuser bash -c '
umask 027
nohup /opt/app/start.sh >> /var/log/app.log 2>&1 &
'

五、日志轮转(避免权限混乱)

使用 logrotate

/var/log/myapp.log {
    daily
    rotate 7
    compress
    missingok
    notifempty
    create 640 appuser appgroup
}

六、常见权限建议

场景 推荐权限
普通应用日志 640
私密日志 600
Web 可访问 644(不推荐放 web 目录)

七、排查权限问题

ls -l nohup.out
ps aux | grep command
whoami

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

  • 你是 系统服务 / 脚本 / Java / Python
  • 日志路径
  • 是否被其他用户读取

我可以给你一套可直接用的命令

0