如何通过Shell脚本实时tail日志新增行并grep匹配指定error code
实时tail日志并筛选指定错误码的实现方案
基础通用方案
直接使用系统原生的tail+grep命令组合即可满足需求,无需安装额外工具:
tail -f /path/to/your/logfile | grep "指定的error code"
参数说明
tail -f:持续监听目标日志文件的新增内容,有新行写入时会实时输出到标准流- 管道符
|:将tail输出的内容实时传递给grep做匹配过滤 grep "指定的error code":仅输出包含目标错误码的行
场景适配优化
1. 适配日志轮转场景
如果你的服务会按大小/时间切割日志(切割后原日志重命名、生成新的同名日志文件),将-f改为大写的-F即可自动跟踪新生成的同名日志文件,避免监听中断:
tail -F /path/to/your/logfile | grep "指定的error code"
2. 其他常用过滤需求
- 忽略大小写匹配:给
grep加-i参数tail -F /path/to/your/logfile | grep -i "指定的error code" - 同时查看匹配行的上下文:加
-C N参数可显示匹配行前后各N行,-B N仅显示前N行,-A N仅显示后N行# 显示匹配行前后各3行 tail -F /path/to/your/logfile | grep -C 3 "指定的error code" - 多错误码匹配:加
-E参数用竖线分隔多个匹配规则# 匹配error code 1001或1002的行 tail -F /path/to/your/logfile | grep -E "error code 1001|error code 1002" - 同时保存匹配结果到本地文件:追加
tee -a命令tail -F /path/to/your/logfile | grep "指定的error code" | tee -a /path/to/save/result.log
3. 远程日志监听
如果需要监听远程服务器的日志,直接通过ssh远程执行命令即可:
ssh user@remote_ip "tail -F /path/to/remote/logfile | grep '指定的error code'"
内容的提问来源于stack exchange,提问作者Time
相关产品推荐
相关产品推荐

