温馨提示×

linux nohup日志怎么排错

小樊
36
2026-10-21 01:27:19
栏目: 智能运维

在 Linux 下用 nohup 跑程序时,日志排错是常见的运维问题。下面按常见场景 → 排查方法 → 实用技巧给你梳理一遍。


一、nohup 日志默认在哪?

nohup command > output.log 2>&1 &
  • 默认日志:nohup.out(在当前目录)
  • 如果指定了重定向:看你写的文件(如 output.log)

⚠️ 常见坑:

  • 当前目录无写权限 → 日志写不进去
  • 程序崩溃太快 → 日志内容很少

二、基本排错步骤

1️⃣ 确认进程是否还在

ps -ef | grep your_program

或

jobs -l

2️⃣ 查看日志内容

tail -f nohup.out
# 或
tail -n 200 output.log

3️⃣ 看错误输出是否分离

如果之前没合并:

nohup command > out.log 2> err.log &

分别看 out.log 和 err.log


三、常见错误 & 对应排查

❌ 1. nohup: ignoring input and appending output to ‘nohup.out’

✅ 正常提示,不是错误


❌ 2. 日志为空

可能原因:

  • 程序没启动成功
  • 日志被缓冲(尤其是 Python / Java)

✅ 解决:

  • Python:
python -u app.py > log.txt 2>&1 &
  • Java:
java -Djava.io.tmpdir=/tmp App > log.txt 2>&1 &

❌ 3. 程序启动后马上退出

看日志里是否有:

  • Permission denied
  • Address already in use
  • ModuleNotFoundError

✅ 手动前台跑一次:

command

更容易看到真实错误


❌ 4. 端口被占用

lsof -i:8080
netstat -tunlp | grep 8080

❌ 5. 环境变量不对

nohup 启动时常缺少:

  • PATH
  • JAVA_HOME
  • PYTHONPATH

✅ 建议:

nohup /bin/bash -c 'source ~/.bashrc; your_command' > log.txt 2>&1 &

四、推荐的安全写法(排错友好)

nohup /bin/bash -c '
  source ~/.bashrc
  cd /your/path
  python -u app.py
' > app.log 2>&1 &

五、进阶排错工具

  • 实时看日志:
tail -f app.log
  • 搜索错误:
grep -i error app.log
  • 用 strace 看系统调用(高级):
strace -f -o trace.log your_command

六、总结一句话

nohup 排错 = 看日志 + 前台复现 + 检查权限/环境/端口

如果你愿意,可以把:

  • 你的 nohup 命令
  • 日志内容(贴一部分)

发出来,我可以直接帮你定位问题。

0 踩