温馨提示×

如何监控nohup日志变化

小樊
32
2026-08-19 10:54:05
栏目: 编程语言

nohup 本身不负责日志监控,它只是把程序输出重定向到文件(默认是 nohup.out)。监控日志变化通常就是监控这个文件的变化。下面按常见需求给你几种实用方法,从简单到进阶。


一、实时查看日志(最常用)

1️⃣ tail -f(最推荐)

tail -f nohup.out
  • 实时输出新增内容
  • Ctrl + C 退出
  • 适合“盯着看”

如果日志很大,只看最后 100 行:

tail -n 100 -f nohup.out

2️⃣ less +F(可暂停、搜索)

less +F nohup.out
  • F:实时跟踪
  • Ctrl + C:暂停
  • /关键字:搜索
  • Shift + F:继续跟踪

✅ 比 tail 更适合查看大日志


二、监控日志是否变化(不一直看)

3️⃣ 使用 watch

watch -n 1 "ls -lh nohup.out"
  • 每秒检查文件大小
  • 适合判断“有没有新日志写入”

4️⃣ 对比文件大小

du -h nohup.out

stat nohup.out

三、按关键字监控日志(非常实用)

5️⃣ 过滤关键字

tail -f nohup.out | grep ERROR

多个关键字:

tail -f nohup.out | grep -E "ERROR|WARN|Exception"

只显示、不阻塞原日志:

tail -f nohup.out | grep --line-buffered ERROR

四、日志轮转 & 防止 nohup.out 过大

6️⃣ 启动时指定日志文件(推荐)

nohup java -jar app.jar > app.log 2>&1 &

然后监控:

tail -f app.log

7️⃣ 自动清理或切割日志

nohup java -jar app.jar >> app.log 2>&1 &

或使用 logrotate(生产环境推荐)


五、程序挂了自动重启 + 日志监控(进阶)

8️⃣ 用 while 简单守护

while true; do
  nohup java -jar app.jar > app.log 2>&1 &
  PID=$!
  tail --pid=$PID -f app.log
done

六、推荐组合(实战总结)

场景 推荐方式
实时看日志 tail -f
大日志 + 搜索 less +F
看错误 `tail -f
判断是否有新日志 watch ls -lh
生产环境 指定日志 + logrotate

如果你愿意,可以告诉我:

  • 你用的是 Java / Python / Shell / Node
  • 日志是 nohup.out 还是自定义
  • 是否想 自动报警 / 重启

我可以给你一套针对你场景的完整监控方案

0