温馨提示×

怎样分析nohup日志

小樊
47
2026-09-24 19:40:30
栏目: 编程语言

nohup 命令本身只是让程序在后台运行、不受终端关闭影响,它不会产生特殊格式的日志,日志内容完全取决于你运行的程序。通常我们用 nohup command > out.log 2>&1 & 把输出重定向到文件。

下面从定位日志 → 基本查看 → 分析技巧 → 常见问题几个方面说明。


一、先确认日志在哪

常见写法:

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

日志文件一般是:

  • 你显式指定的(如 app.log)
  • 默认是 nohup.out(在当前目录)

查看进程和日志路径:

ps -ef | grep 程序名
ls -lh nohup.out

二、最基础的日志查看命令

1. 实时跟踪日志(最常用)

tail -f app.log
  • Ctrl + C 退出
  • 适合看“程序是否还活着”

2. 看最后 N 行

tail -n 100 app.log

3. 看开头

head -n 50 app.log

4. 全文搜索关键字

grep "ERROR" app.log
grep -i "exception" app.log

三、常见分析场景

1. 程序为什么挂了?

grep -iE "error|exception|traceback|killed" app.log

如果是 Python:

grep -A 20 "Traceback" app.log

2. 看某个时间段的日志

sed -n '/2026-01-21 10:00/,/2026-01-21 11:00/p' app.log

3. 统计错误数量

grep -c "ERROR" app.log

4. 看是否还在输出(判断是否卡死)

tail -f app.log
# 很久没新内容 → 可能阻塞 / 死循环

四、nohup 日志的常见坑

❌ 1. 日志不更新

原因:

  • 程序用了缓冲输出(Python 常见)
  • 解决:
python -u app.py > app.log 2>&1 &

❌ 2. 磁盘写满

df -h
du -sh app.log

❌ 3. 日志太大

建议:

  • 用 logrotate
  • 或程序内做日志切割

五、推荐做法(工程级)

✅ 不要只靠 nohup.out
✅ 用 logging 模块 / 框架日志
✅ 日志带时间、级别、线程号
✅ 用 supervisor / systemd 替代 nohup


如果你愿意,可以把你的 nohup 命令 + 日志样例发出来,我可以直接帮你分析具体问题。

0 踩