在 CentOS(及其他 Linux 系统)中,使用 nohup 运行程序时,默认会把输出写入 nohup.out,日志文件的权限取决于:
下面分几种常见情况和做法说明。
nohup command &
等价于:
nohup command > nohup.out 2>&1 &
nohup.out 不存在:umask 决定(常见为 644)查看 umask:
umask
touch /var/log/myapp.log
chmod 640 /var/log/myapp.log
chown appuser:appgroup /var/log/myapp.log
nohup command >> /var/log/myapp.log 2>&1 &
✅ 好处:权限可控,不会自动变成 644
如果你希望 nohup.out 自动是某种权限:
umask 027
nohup command &
umask 027 → 新文件权限 640umask 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
如果你愿意,可以告诉我:
我可以给你一套可直接用的命令。