温馨提示×

如何分析nohup日志

小樊
44
2026-09-21 18:03:02
栏目: 编程语言

nohup 本身只是“忽略挂断信号并运行命令”,真正需要分析的是它重定向出来的日志文件(通常是 nohup.out 或你指定的文件)。下面从定位日志 → 基础查看 → 问题排查 → 进阶分析逐步说明。


一、先确认日志在哪

1. 默认情况

nohup command &

日志默认写入:

nohup.out

(在当前工作目录)

2. 自定义日志

常见写法:

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

或

nohup ./start.sh >> run.log 2>&1 &

查看进程和日志路径:

ps -ef | grep 进程名
ls -lh *.log nohup.out

二、基础日志查看方法

1. 实时查看(最常用)

tail -f nohup.out

或

tail -100f app.log

退出:Ctrl + C


2. 查看最后 N 行

tail -n 200 nohup.out

3. 查看最前面内容

head -n 100 nohup.out

4. 全文查看(小文件)

less nohup.out
  • G 跳到末尾
  • /关键字 搜索
  • q 退出

三、常见问题分析方法

1. 程序“没反应 / 自动退出”

重点看 错误日志

grep -i error nohup.out
grep -i exception nohup.out

常见原因:

  • 端口被占用
  • 配置文件路径错误
  • 依赖缺失
  • 权限不足

2. 看是否真的在运行

ps -ef | grep 程序名

或

jobs -l

如果进程没了,但日志停在某一行:

  • 多半是未捕获异常
  • 或被 OOM Kill

3. 查看是否被系统杀掉

dmesg | grep -i killed

或

journalctl -xe | grep 程序名

四、日志分析进阶技巧

1. 按时间过滤(日志带时间戳时)

grep "2026-01-21 10:" nohup.out

2. 统计错误次数

grep -c ERROR app.log

3. 提取某类日志

grep -A 5 -B 5 "NullPointer" nohup.out

(前后各 5 行,定位上下文)


4. 日志太大,先压缩再看

gzip nohup.out
zless nohup.out.gz

五、推荐的 nohup 日志规范(很重要)

✅ 不要只靠 nohup.out

nohup app >> app_$(date +%F).log 2>&1 &

✅ 程序内做好日志分级

  • INFO
  • WARN
  • ERROR

✅ 定期清理

logrotate

六、你可以告诉我

如果你愿意,可以补充:

  • 用的什么程序(Java / Python / Shell)
  • 日志内容示例
  • 具体现象(卡住 / 退出 / 报错)

我可以直接帮你读日志、定位问题。

0 踩