【Linux】日志命令行练习(持续更新)

8 篇文章 0 订阅
6 篇文章 0 订阅

前言

公司生产问题需要登录堡垒机排查。
没有日志平台的情况下,生产问题同样要求迅速响应,这里积累下常用的命令。

环境

  • 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)
    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 交互窗口下


  • pageUp 向上(前)翻一页 或 b (backward)
    pageDown 向下(后)翻一页 或 f (forward)


  • k向上(前)一行
    j 向下(后)一行

9. 关键词滚动搜索

  • 向前查找
## 进入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

10. 看最早的日志信息

一个比较有趣的命令 tac 来自于 cat

tac access.log | grep Edg

在这里插入图片描述
可以看到日志都被倒排了,最底部的即为最早的日志。

11. 正则表达式

grep 的其他参数用于支持正则
-o, --only-matching
-E, --extended-regexp 普通正则
-P, --perl-regexp 有环视功能

  • 查所有请求成功的GET请求URL
    grep -oP "(?<=GET)(.*?)(?= HTTP/1.1)" access.log"
    • (?<=GET) 表示以GET开头但是match的内容不包含GET
    • (?= HTTP/1.1) 表示以 HTTP/1.1结尾但是match的内容不包含HTTP/1.1
  • 8
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值