在 Linux 下使用 nohup 启动程序时,通常会把输出重定向到日志文件(默认是 nohup.out,或你自己指定的文件)。检索日志本质上就是对日志文件进行查看和搜索。下面按常见场景给你总结一下。
nohup command &
日志会写到当前目录的:
nohup.out
nohup command > app.log 2>&1 &
日志在:
app.log
tail -f app.log
或:
tail -fn 100 app.log # 从最后100行开始实时看
tail -n 200 app.log
head -n 200 app.log
grep 搜索关键字grep "ERROR" app.log
忽略大小写:
grep -i "error" app.log
显示行号:
grep -n "ERROR" app.log
反向匹配(不包含):
grep -v "INFO" app.log
tail -f app.log | grep "ERROR"
只看 ERROR 且带颜色:
tail -f app.log | grep --color "ERROR"
同时满足:
grep "ERROR" app.log | grep "timeout"
或关系:
grep -E "ERROR|WARN" app.log
如果日志里有时间格式(如 2026-01-21 10:00:00):
grep "2026-01-21 10:" app.log
或区间:
awk '/2026-01-21 10:00/,/2026-01-21 11:00/' app.log
grep -c "ERROR" app.log
less app.log
在 less 中:
/ERROR 搜索n 下一个N 上一个q 退出如果是 .gz 日志:
zgrep "ERROR" app.log.gz
tail -n 1000 app.log | grep "ERROR"
grep -n "Server started" app.log
然后用 sed 或 less 看后面内容。
nohup java -jar app.jar > app.log 2>&1 &
logrotate 管理日志大小tail + grep,不要一上来 vim 大文件如果你愿意,可以告诉我:
我可以直接帮你写精准的检索命令。