温馨提示×

如何分析linux nohup日志

小樊
48
2026-09-12 09:49:33
栏目: 智能运维

在 Linux 下,nohup 通常配合 & 使用来让进程在后台运行,并把输出重定向到日志文件(默认是 nohup.out)。分析 nohup 日志,一般可以从日志位置、查看方式、问题定位、日志管理几个方面入手。


一、确认 nohup 日志在哪里

1. 默认日志

如果你是这样启动的:

nohup python app.py &

日志默认会写到当前目录的:

nohup.out

2. 自定义日志(推荐)

nohup python app.py > app.log 2>&1 &
  • >:标准输出
  • 2>&1:错误输出也写入同一文件

日志就在:

app.log

二、常用日志查看命令

1. 实时查看日志

tail -f app.log

tail -F nohup.out

-F 会在日志被切割后继续跟踪)

2. 查看最后 N 行

tail -n 200 app.log

3. 查看最前面内容

head -n 100 app.log

4. 全文搜索关键字

grep "ERROR" app.log

5. 实时过滤错误

tail -f app.log | grep ERROR

6. 按时间分析

grep "2026-01-21 10:" app.log

三、如何分析日志内容

1. 看进程是否启动成功

常见正常日志:

  • Listening on
  • Server started
  • started successfully

异常日志:

  • Permission denied
  • Address already in use
  • ModuleNotFoundError
  • Exception

2. 看是否中途崩溃

重点关注:

  • Traceback
  • Segmentation fault
  • Killed

例如:

grep -n "Traceback" app.log

3. 看资源问题

如果日志中有:

  • Killed
  • Out of memory

可结合:

dmesg | grep -i kill

4. 看是否还在运行

ps -ef | grep app.py

jobs -l

四、日志过大如何处理

1. 查看日志大小

du -h nohup.out

2. 清空日志(不中断进程)

> nohup.out

truncate -s 0 nohup.out

3. 使用日志轮转(推荐)

logrotate 或重定向到带日期的日志:

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

五、调试建议(很重要)

  1. 不要只依赖 nohup.out
    • > xxx.log 2>&1
  2. 程序内部写日志
    • Python:logging
    • Java:logback / log4j
  3. 后台任务用 systemd 更稳妥
    [Service]
    ExecStart=/usr/bin/python app.py
    Restart=always
    

六、一个完整分析示例

# 查看进程
ps -ef | grep app.py

# 查看最近错误
tail -n 500 app.log | grep -i error

# 实时观察
tail -f app.log

# 看是否被系统杀掉
dmesg | grep -i oom

如果你愿意,可以把你的 nohup 启动命令 + 日志片段发出来,我可以直接帮你定位问题。

0