在日常运维或开发工作中,查看系统、应用或服务器日志是排查问题的家常便饭。面对动辄几万行的日志文件,盲目翻找无异于大海捞针。掌握一些关键词搜索技巧,能让你像老司机一样,三两下就锁定关键信息。
用好 grep 命令,精准筛选内容
Linux 下最常用的日志搜索工具就是 grep。比如你想查某个用户登录失败的记录,可以这样写:
grep "login failed" /var/log/auth.log
如果想忽略大小写,加上 -i 参数更省心:
grep -i "failed" /var/log/auth.log
结合正则表达式,匹配复杂模式
有些错误日志带时间戳,比如 [2024-05-13 14:22:10]。你可以用正则快速定位某个时间段的问题:
grep "\[2024-05-13 14:2.*ERROR" app.log
这里的 .* 表示任意字符出现多次,能匹配到 14:20 到 14:29 之间的所有 ERROR 日志。
排除干扰信息,聚焦关键内容
日志里常夹杂大量正常状态输出,干扰判断。用 -v 参数可以反向过滤,去掉不关心的内容:
grep -v "status=ok" access.log
这条命令会显示所有“状态不是 ok”的请求,异常请求立马浮现出来。
多关键词组合,缩小排查范围
有时候问题涉及多个条件,比如“某个 IP 访问了特定接口并返回 500”。可以用 -E 启用扩展正则,配合 | 和 .* 实现多条件匹配:
grep -E "192\.168\.1\.100.*POST.*500" access.log
这样能快速锁定可疑请求,避免逐行扫描。
利用上下文,看清问题全貌
光看一行关键词可能不够,需要前后文辅助判断。grep 提供了 -A(后几行)、-B(前几行)和 -C(前后各几行)参数:
grep -C 3 "Out of memory" system.log
这条命令会把关键词前后各 3 行一起输出,帮你还原崩溃前后的运行状态。
保存常用搜索,提升效率
如果你经常查某类问题,可以把高频命令写成脚本或加到 shell 别名里。比如在 ~/.bashrc 中添加:
alias logerr='grep -i error *.log'
alias logwarn='grep -i warning *.log'
以后输入 logerr 就能一键搜出所有错误,省时又省力。
日志本身不会说话,但会留下痕迹。掌握这些搜索技巧,就像有了放大镜和探照灯,再隐蔽的问题也藏不住。