nohup 命令默认会把输出写入 当前目录的 nohup.out 文件(如果没重定向的话)。
改“nohup 日志权限”通常分 三种情况,你看看是哪一种:
如果 nohup.out 已经生成:
chmod 644 nohup.out
或给某个用户/组:
chown user:group nohup.out
⚠️ 注意:
不要用默认的 nohup.out,自己重定向:
nohup your_command > /var/log/myapp.log 2>&1 &
然后提前建好并设权限:
touch /var/log/myapp.log
chmod 640 /var/log/myapp.log
chown appuser:appgroup /var/log/myapp.log
✅ 好处:权限完全可控
umask 控制新建文件权限在启动前设置:
umask 027
nohup your_command > nohup.out 2>&1 &
这样新建的 nohup.out 默认就是 640
sudo -u + 指定用户(最规范)sudo -u appuser bash -c 'nohup your_command > /home/appuser/app.log 2>&1 &'
日志自然属于 appuser
[Service]
User=appuser
StandardOutput=append:/var/log/myapp.log
StandardError=append:/var/log/myapp.log
权限由 systemd 管理,最安全
❌ 改了权限,但程序还在以旧权限写
✅ 解决:重启进程
❌ nohup.out 在别人目录下没权限
✅ 解决:换日志路径
如果你愿意,可以告诉我:
我可以给你 一条可直接用的命令。