在使用 nohup 运行程序时,默认会把输出重定向到当前目录下的 nohup.out 文件(如果你没有手动指定重定向)。关于“nohup日志权限如何修改”,通常有以下几种情况和做法:
如果 nohup.out 已经生成,可以直接用 chmod 修改:
chmod 644 nohup.out
或给某用户/组权限:
chown user:group nohup.out
chmod 640 nohup.out
⚠️ 注意:
这只能改当前已存在文件的权限,nohup 不会因为你改了权限就自动改变后续写入方式。
更好的做法是在启动命令中显式指定日志文件,而不是用默认的 nohup.out:
nohup your_command > /var/log/myapp.log 2>&1 &
然后提前创建并设置权限:
touch /var/log/myapp.log
chown appuser:appgroup /var/log/myapp.log
chmod 640 /var/log/myapp.log
这样日志权限是可控的。
nohup.out 的默认权限受 umask 影响。
查看当前 umask:
umask
例如 umask 为 022,新文件默认权限是 644。
你可以在启动前修改 umask:
umask 027
nohup your_command > nohup.out 2>&1 &
这样生成的 nohup.out 权限会是 640。
如果你希望日志属于某个服务用户:
sudo -u appuser bash -c 'nohup your_command > /home/appuser/app.log 2>&1 &'
日志文件自然归 appuser 所有。
如果日志长期存在,建议配合 logrotate:
/var/log/myapp.log {
daily
rotate 7
compress
missingok
notifempty
create 640 appuser appgroup
}
> logfile 2>&1 明确重定向umask 或 logrotate如果你能说明:
我可以给你一条可直接用的命令。