温馨提示×

nohup日志权限问题

小樊
37
2026-08-31 07:50:39
栏目: 编程语言

nohup 日志的权限问题,通常指的是 执行 nohup 后生成的 nohup.out 文件没有写权限,或无法创建、无法写入。下面按常见场景给你一个完整排查和解决思路。


一、最常见问题:nohup.out 没有写权限

现象

nohup: failed to run command `xxx': Permission denied

nohup: ignoring input and redirecting stderr to stdout
nohup.out: Permission denied

原因

  • 当前用户对当前目录没有写权限
  • nohup.out 已存在,且权限不足
  • 脚本本身没有执行权限

二、排查步骤

1️⃣ 当前目录是否可写

ls -ld .

如果看到类似:

drwxr-xr-x root root .

且你不是 root → 不能写

✅ 解决:

cd ~
nohup your_command &

2️⃣ nohup.out 是否已存在

ls -l nohup.out

如果看到:

-rw-r--r-- root root nohup.out

而你不是 root → 无法写入

✅ 解决方式(任选):

✅ 方式一:删除或更换

rm nohup.out
nohup your_command &

✅ 方式二:指定自己的日志文件(推荐)

nohup your_command > my.log 2>&1 &

3️⃣ 脚本没有执行权限(非常常见)

nohup ./test.sh &

如果:

ls -l test.sh
# -rw-r--r--

✅ 解决:

chmod +x test.sh
nohup ./test.sh &

三、推荐的标准用法(避免权限问题)

✅ 明确指定日志文件

nohup ./app.sh > app.log 2>&1 &

或:

nohup ./app.sh > app.log 2>&1 </dev/null &

✅ 优点:

  • 不会生成 nohup.out
  • 日志路径可控
  • 权限清晰

四、以 root 运行导致权限混乱(小心)

如果你用:

sudo nohup ./app.sh &

但平时用普通用户登录:

ls -l nohup.out
# -rw-r--r-- root root

✅ 解决:

sudo chown $USER:$USER nohup.out

或:

sudo rm nohup.out

五、系统服务场景(systemd)

如果你是用 nohup 启动 长期服务,更推荐用 systemd,不存在这个权限问题:

[Service]
User=appuser
ExecStart=/opt/app/start.sh
StandardOutput=append:/var/log/app.log
StandardError=append:/var/log/app.log

六、快速自检清单 ✅

  • [ ] 当前目录是否可写
  • [ ] nohup.out 是否存在且权限正确
  • [ ] 脚本是否有 x 权限
  • [ ] 是否用 root 生成了文件
  • [ ] 是否显式指定了日志文件

如果你愿意,可以把 完整报错信息 / 启动命令 / ls -l nohup.out 输出贴出来,我可以帮你精确定位是哪一类权限问题。

0