nohup 本身不负责日志监控,它只是把程序输出重定向到文件(默认是 nohup.out)。监控日志变化通常就是监控这个文件的变化。下面按常见需求给你几种实用方法,从简单到进阶。
tail -f(最推荐)tail -f nohup.out
Ctrl + C 退出如果日志很大,只看最后 100 行:
tail -n 100 -f nohup.out
less +F(可暂停、搜索)less +F nohup.out
F:实时跟踪Ctrl + C:暂停/关键字:搜索Shift + F:继续跟踪✅ 比 tail 更适合查看大日志
watchwatch -n 1 "ls -lh nohup.out"
du -h nohup.out
或
stat nohup.out
tail -f nohup.out | grep ERROR
多个关键字:
tail -f nohup.out | grep -E "ERROR|WARN|Exception"
只显示、不阻塞原日志:
tail -f nohup.out | grep --line-buffered ERROR
nohup java -jar app.jar > app.log 2>&1 &
然后监控:
tail -f app.log
nohup java -jar app.jar >> app.log 2>&1 &
或使用 logrotate(生产环境推荐)
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 |
如果你愿意,可以告诉我:
我可以给你一套针对你场景的完整监控方案。