文章目录
- 前言
- 环境
- 情景
- 1. 获取实时日志
- 2. 关键字定位
- 3. 关键字取并集
- 4. 关键字取交集
- 5. 关键字取差集
- 6. 关键字实时日志捕获
- 7. 关键词上下文打印
- 8. 关键词滚动搜索
- 9. 看最早的日志信息
前言
公司生产问题需要登录堡垒机排查。
没有日志平台的情况下,生产问题同样要求迅速响应,这里积累下常用的命令。
环境
- Linux系统 本文是Centos7.9
- 安装 Nginx
## 安装含有 nginx 的源
yum install epel-release## 安装 nginx
yum install nginx -y## 启动 nginx
/usr/sbin/nginx## 开启防火墙 (80端口)
firewall-cmd --zone=public --add-port=80/tcp --permanent
firewall-cmd --reload## 进入访问日志目录
cd /var/log/nginx
浏览器(http)访问服务器,看到如下页面说明环境准备完成
情景
以 nginx 的访问日志作为例子,结合查询情景,练习对应的命令。
1. 获取实时日志
- 获取实时日志,默认打印倒数10行历史日志
tail -f access.log
- 获取实时日志,指定打印历史行数
## 带出5行历史日志
tail -5f access.log## 效果同上
tail -n 5 access.log
- 获取实时日志,屏蔽历史日志
tail -0f access.log
2. 关键字定位
- less 命令, 看对应手册有一个结论:less 比 more 更强 (英语梗 less is more)
- 关键词检索
## grep 跟关键词
less access.log | grep '21:42'
3. 关键字取并集
## \| 表达或的关系
less access.log | grep '21:42\|21:31'
4. 关键字取交集
## 连续使用 grep 可以做到交集的效果
less access.log | grep '21:42' | grep ''
5. 关键字取差集
## grep -v 表示过滤掉21:09所有记录,做到取差集的效果
less access.log | grep 'Safari' | grep -v '21:09'
6. 关键字实时日志捕获
## 只看Edg浏览器的实时访问记录
tail -0f access.log | grep 'Edg'
7. 关键词上下文打印
## -A 捕获到关键词所在行,并带出向后2行日志 (After)
less access.log | grep '/img/centos-logo' -A 2
## -B 捕获到关键词所在行,并带出前2行日志 (Before)
less access.log | grep '/img/centos-logo' -B 2
## -C 捕获到关键词所在行,并带出前后2行日志 (Before)
less access.log | grep '/img/centos-logo' -C 2
8. 关键词滚动搜索
- 向前查找
## 进入less交互模式
less access.log ## 跳转到文件最后的部分
shift + g ## 键入向前查找命令
?## 向前继续查找
n## 退出交互界面
:q
- 向后查找
## 进入less交互模式
less access.log ## 跳转到文件最后的部分
shift + g ## 键入向后查找命令
/## 向后继续查找
n## 退出交互界面
:q
- 上下文翻阅
上文介绍了向前和向后的查找方式,实际工作上需要来回看,使用shirt + n
进行反向操作- 如果用
?
向前查找,n
为向前查一个词shirt + n
为向后查一个词 - 如果用
/
向后查找,n
为向后查一个词shirt + n
为向前查一个词
- 如果用
- 结合 grep 缩小文本长度
## 同样执行less命令,可以继续使用上文的搜索技巧
less access.log | grep Chrome | less
9. 看最早的日志信息
一个比较有趣的命令 tac
来自于 cat
,
tac access.log | grep Edg
可以看到日志都被倒排了,最底部的即为最早的日志。