温馨提示×

nohup日志报错怎么分析

小樊
47
2026-09-27 16:39:21
栏目: 编程语言

nohup 本身只是“忽略挂断信号并运行命令”的工具,真正报错的是被它启动的程序,日志一般写在:

  • nohup.out(默认)
  • 你重定向的地方,如 nohup xxx > app.log 2>&1 &

下面按实用思路讲怎么分析。


一、先确认日志在哪

# 默认
ls -lh nohup.out

# 如果用了重定向
ps -ef | grep 你的程序

常见写法:

nohup python app.py > run.log 2>&1 &

那错误就在 run.log


二、看日志的“第一错误点”

不要从头读,直接看最后的报错:

tail -n 200 nohup.out

或者实时看:

tail -f nohup.out

重点看:

  • Traceback(Python)
  • Exception / Error
  • Permission denied
  • No such file
  • Address already in use
  • OutOfMemory
  • Segmentation fault

三、常见 nohup 日志错误 & 原因

1️⃣ 命令本身没找到

nohup: failed to run command ‘xxx’: No such file or directory

✅ 原因:

  • 命令路径不对
  • 没有可执行权限

✅ 解决:

which python
chmod +x app.sh

2️⃣ 环境变量问题(很常见)

ModuleNotFoundError
command not found

✅ 原因:

  • nohup 启动的环境 ≠ 你终端环境
  • 没加载 conda / venv

✅ 解决:

nohup bash -c 'source activate env && python app.py' > log 2>&1 &

3️⃣ 端口被占用

Address already in use

✅ 解决:

lsof -i:8080
kill -9 PID

4️⃣ 权限不足

Permission denied

✅ 解决:

ls -l 文件
sudo chown -R user:user dir

5️⃣ 程序跑一会儿就停(没报错)

可能原因:

  • 被 OOM 杀掉
  • 后台任务被系统限制

✅ 查系统日志:

dmesg | grep -i kill
journalctl -xe

四、推荐的标准写法(少踩坑)

nohup /绝对路径/python app.py \
> app.log 2>&1 &

或更稳:

setsid /绝对路径/python app.py > app.log 2>&1 &

五、快速排查 checklist

  • [ ] 日志文件找到了吗
  • [ ] 看的是 最后报错
  • [ ] 是否是环境变量问题
  • [ ] 是否是权限 / 端口
  • [ ] 是否被系统杀掉

如果你愿意,可以把 nohup.out 或报错片段贴出来,我可以直接帮你定位具体原因。

0 踩