日志查询4剑客

news/2024/11/19 10:29:36/文章来源:https://www.cnblogs.com/liaofy/p/18347987

1.日志查询4剑客

查看日志不要使用,cat或vim,vi命令。未来的日志文件。有的 日志可达:40G或以上.

如果使用cat查看,会刷屏根本停不下来.

如果使用vi/vim查看,从磁盘中加载到内存,占用系统内存,很 容易导致系统内存不足.

  • linux查询 日志 ,文件较大,通过cat,vi/vim进行查看,系统 可能卡死,可能内存不足
  • 推荐使用不会占用系统太多资源的命令,查看日志:head/tail , less/more

1.1 head 显示文件的头几行,默认是头10行

head选项
-n num 显示头num行,默认显示头10行
显示/etc/passwd 的前5行
head -n5 /etc/passwd
head -n 5 /etc/passwd
head -5 /etc/passwd

一般情况下,使用-数字即可.如果-5报错或无法使用,则使用-n5 形式

1.2 tail 显示文件的后几行,默认是后10行

tail选项
- n num 显示最后num行,默认显示最后10行.
- f follow显示文件末尾的实时更新 一般用于查看日志
显示/etc/passwd 的后5行
tail -n5 /etc/passwd
tail -5 /etc/passwd
  • 可以实时查看文件的末尾的更新
查看/var/log/secure末尾的实时更新
tail -f  /var/log/secure
  • 赠送命令:tailf === tail -f
  • 开两个窗口,一个查看一个写入

image

温馨提示: 如何查看日志,要每一行都看么?

看日志要抓住核心,关键, 线索

这些线索一般是: 关键词语错误提示 : failed, failure,error....

/var/log/secure中 查看,Failed password

1.3 less 按页显示文件内容

一页一页翻看文件内容.也可以进行搜索

less选项与快捷方式 说明
q 退出
空格或f 下一页
b 上一页
G 最后1行
g 第一行
99g 到99行
/ 内容 搜索,n继续向下搜索,N继续向上搜索
选项
less -N 显示行号

1.4 more 按页显示文件内容,到达最后一行就退出

more 功能没有less多

2. wc统计

  • word count/calcuate 统计文件中单词情况,大小,行数,未来工作中用来统计行数。
  • 简单使用是统计文件的行数,未来还可以统计一些命令的结果有 多少行(个).
wc选项 说明
- l 统计行数
统计/etc/services 文件有多少行
wc -l /etc/services
11176 /etc/services

image

未来wc使用案例

一般都是配合其他命令,可以取出xxxx次数. 还可以放在脚本中进行判断

案例:  统计系统用户登录错误次数
grep:过滤
1.过滤出日志中错误信息
[root@oldboy-yang-01 oldboy]# grep 'Failed password' /var/log/secure
Aug  7 07:01:54 oldboy-yang-01 sshd[1811]: Failed password for root from 10.0.0.130 port 45702 ssh2
Aug  7 07:01:54 oldboy-yang-01 sshd[1811]: Failed password for root from 10.0.0.130 port 45702 ssh2
Aug  7 07:02:23 oldboy-yang-01 sshd[1814]: Failed password for root from 10.0.0.130 port 45704 ssh2
2.交个wc -l 统计次数
grep命令的结果传递给wc -l 命令
[root@oldboy-yang-01 oldboy]# grep 'Failed password' /var/log/secure | wc -l
3

grep命令过滤,在文件中,命令结果中找出你要的内容

管道符号

命令1 | 命令2

把前一个命令的结果,传递给后面的命令使用

管道符号 |

3.查询命令位置

3.1which

  • 查询命令的位置
[root@oldboy-yang-01 ~]# which head tail less more wc
/usr/bin/head
/usr/bin/tail
/usr/bin/less
/usr/bin/more
/usr/bin/wc

3.2 whereis

  • 查询命令及相关文件的位置
[root@oldboy-yang-01 ~]# whereis head tail less more wc
head: /usr/bin/head /usr/share/man/man1/head.1.gz
tail: /usr/bin/tail /usr/share/man/man1/tail.1.gz
less: /usr/bin/less /usr/share/man/man1/less.1.gz /usr/share/man/man3/less.3pm.gz
more: /usr/bin/more /usr/share/man/man1/more.1.gz
wc: /usr/bin/wc /usr/share/man/man1/wc.1.gz

4.文件比较命令

未来在服务的配置中,我们需要对比下新旧的配置文件,查看修改 了哪些内容。

这时候我们需要进行文件的对比操作,可以通过diff,vimdiff 命令实现。

  • diff
  • vimdiff
创建测试文件
vim oldboy-a.txt  oldboy-b.txt
编辑
编辑完成后:w 才能切换到下一个文件
切换到下一个文件:n  切换到上一个文件:N

4.1 diff

[root@oldboy-yang-01 ~]# diff oldboy-a.txt  oldboy-b.txt 
4c4
< 4
---
> 3
5a6
> 
a append 增加
c 替换,修改
d 删除

4.2vimdiff

vimdiff oldboy-a.txt oldboy-b.txt

image

5. 排序去重组合

未来生产环境,统计日志,日志分析,系统信息统计,必备命令

  • sort: 排序
  • uniq: 去重并统计次数

5.1 sort - 排序

sort选项 说明
- n number把要排序的内容当做是 数字 ,按照数字大小进行排 序,默认是升序排序(小大).
- k 指定某一列,根据某一列进行排序
- r reverse逆序排序
- t 指定分隔符,只能指定1个字符. 默认是空格

1.1 基本数字排序

root@oldboy-yang-01 ~]# sort sost.txt 1
11
2
200 
22
3
33
45
6
6
9.9
9999
[root@oldboy-yang-01 ~]# sort -n sost.txt 1
2
3
6
6
9.9
11
22
33
45
200
9999
[root@oldboy-yang-01 ~]# 

温馨提示:

sortt 默认是按照字母/字符进行对比,会造成数字对比失败.

解决 - n

按照逆顺序(大--小)进行排序
sort -nr sost.txt[root@oldboy-yang-01 ~]# sort -nr sost.txt 
9999
200
45
33
22
11
9.9
6
6
3
2
1

1.2 对文件某一列进行排序

对文件中某一列进行排序 
[root@oldboy-yang-01 ~]# cat sort-age.txt 
lidao996  18
oldbao    16
li        30
wang      20
chao      25
[root@oldboy-yang-01 ~]# sort -n -k2 sort-age.txt oldbao    16
lidao996  18
wang      20
chao      25
li        30
如果是逆序排序则加上-r即可
[root@oldboy-yang-01 ~]# sort -nr -k2 sort-age.txt 
li        30
chao      25
wang      20
lidao996  18
oldbao    16

企业面试题: ll /etc/ 取出大小最大的前5个.

提示: 需要使用管道

翻译: 对ll /etc/第5列进行逆序排序,取出前5个就行

方法01

对ll /etc/第5列进行逆序排序

ll /etc/ |sort -rnk5

取出前5个就行

ll /etc/ |sort -rnk5 |head -5

方法02 默认排序,取出最后5个

ll /etc/ |sort -nk5 |tail -5

1.3 指定分隔符进行排序

对passwd文件的第3列进行排序(逆序)
cp /etc/passwd .
希望sort命令排序的时候每一列之间如果不是空格,sort也能识
别。
sort使用-t选项就行,指定分隔符(每一列之间通过什么分割的)
sort  -t ':'  -rnk3  /oldboy/passwd

1.4 多列排序

熟悉即可

#通过sort对多列进行同时排序
[root@oldboy-yang-01 oldboy]# cat day005-08-sort.txt 
oldboy 40 linux学院    20000oldli 18  linux学院   21000oldgirl 22  linux学院   30000old3 7 linux学院  4040old2 7 linux学院  30300old1 7 linux学院  50000old4 7 linux学院  30000old5 8 linux学院  25000old6 8 linux学院  15000[root@oldboy-yang-01 oldboy]# sort -rnk2 day005-08-sort.txt 
oldboy 40 linux学院    20000oldgirl 22  linux学院   30000oldli 18  linux学院   21000old6 8 linux学院  15000old5 8 linux学院  25000old4 7 linux学院  30000old3 7 linux学院  4040old2 7 linux学院  30300old1 7 linux学院  50000[root@oldboy-yang-01 oldboy]# sort -r -n -k2 -k4 day005-08-sort.txt 
oldboy 40 linux学院    20000oldgirl 22  linux学院   30000oldli 18  linux学院   21000old5 8 linux学院  25000old6 8 linux学院  15000old1 7 linux学院  50000old2 7 linux学院  30300old4 7 linux学院  30000old3 7 linux学院  4040

多列排序说明-k2 -k4表示先对第2列排序,如果第2列有重复的 则对第4列排序

表示优先对第2列排序,第4列是辅助的

  • sort 20k 题目
cat  >/oldboy/sort-20k.txt EOF192.168.3.1 00:0F:AF:81:19:1F192.168.3.2 00:0F:AF:85:6C:25192.168.3.3 00:0F:AF:85:70:42192.168.2.20 00:0F:AF:85:55:DE192.168.2.21 00:0F:AF:85:6C:09192.168.2.22 00:0F:AF:85:5C:41192.168.0.151 00:0F:AF:85:6C:F6192.168.0.152 00:0F:AF:83:1F:65192.168.0.153 00:0F:AF:85:70:03192.168.1.10 00:30:15:A2:3B:B6192.168.1.11 00:30:15:A3:23:B7192.168.1.12 00:30:15:A2:3A:A1192.168.1.1 00:0F:AF:81:19:1F192.168.2.2 00:0F:AF:85:6C:25192.168.3.3 00:0F:AF:85:70:42192.168.2.20 00:0F:AF:85:55:DE192.168.1.21 00:0F:AF:85:6C:09192.168.2.22 00:0F:AF:85:5C:41192.168.0.151 00:0F:AF:85:6C:F6192.168.1.152 00:0F:AF:83:1F:65192.168.0.153 00:0F:AF:85:70:03192.168.3.10 00:30:15:A2:3B:B6192.168.1.11 00:30:15:A3:23:B7192.168.3.12 00:30:15:A2:3A:A1指定分隔符,多列排序的时候容易出现排序失误。
这时候需要我们手动告诉sort, 排序的范围.# 以.为分隔符
sort -t"."  -rn  -k3  sort-20k.txt
sort -t"."  -rn  -k3,3  -k4,4 sort-20k.txt-rn 数字逆序排序
-k3,3 表示仅对第3列排序
-k4,4 表示仅对第4列排序

5.1 uniq

unique 独一无二.

  • 去重(去掉重复的留下唯一的)
uniq选项
- c 去重并显示次数(重复次数)
[root@oldboy-yang-01 oldboy]# cat uniq.txt 
ldboy
oldboy
oldboy
oldboy
oldboy
oldboy
lidao
lidao
lidao
lidao
lidao
smile
smile
smile
smile
blood
blood
blood
bloodroot@oldboy-yang-01 oldboy]# uniq -c uniq.txt 1 ldboy5 oldboy5 lidao4 smile4 blood

uniq只能对相邻的行进行合并(去重),如果不相邻,需 要通过sort命令调整为相的

先sort , 然后uniq

# 新建测试文件
oldboyoldboyoldboyoldboylidaolidaosmilebloodbloodoldboyoldboylidaolidaolidaosmilesmilesmilebloodblood# 1.先对数据进行排序,相同的数据会在一起
sort  uniq.txt #2.然后通过uniq -c去重并统计次数
sort  uniq.txt |uniq -c #3.然后可以对uniq -c结果进行排序(最大的在最上面,降序排列)
sort  uniq.txt |uniq -c |sort -rn

6. 日期组合

在Linux中我们需要日常查看系统的时间,保证整个网站所有服务 器的系统时间一致的.

未来在运维的日常操作中,书写脚本的时候也需要使用时间,比如 创建以当前日期命名的文件,目录,备份.

  • date
  • ntpdate
  • 特殊符号

6.1 date

设置或查看系统的日期,时间命令

未来主要用于查看日期或去日期

date选项 以xxxx格式显示日期与时间
+ %F 年-月-日 %Y-%m-%d
%w 周几
+%T %H:%M:%S 时:分:秒
- d 根据说明修改时间
- s 修改时间
  • 按照指定格式显示时间或日期
按照指定格式显示日期 年-月-日 2022-11-11
date +%F
2022-07-19full 可以理解为完整的日期按照指定格式显示日期  年月日  20221111
Year
month
day
date + %Y%m%d
20220719显示当前时间 时:分:秒
Hour
Mintue
Second
date  +%T #T time
date +%H:%H:%M:%S显示当前日期为 年-月-日_周几date +%F_%w2022-07-19_2
  • 按照说明显示指定时间或日期
[root@oldboy-yang-01 oldboy]# date -d '-1 day'
2024年 08月 06日 星期二 09:43:40 CST
[root@oldboy-yang-01 oldboy]# date -d '1 day'
2024年 08月 08日 星期四 09:43:51 CST
[root@oldboy-yang-01 oldboy]# # 显示1天的日期 按照年-月-日_周几_小时 格式显示
[root@oldboy-yang-01 oldboy]# date -d '-1day' +%F_%w_%H
2024-08-06_2_09
  • 手动修改时间
date -s '20221111 11:11:11'
date -s '20221111'

6.2 ntpdate 同步时间的命令

# 修改系统时间,让系统时间不同步
date -s '20221111'
# 安装时间同步命令
yum install -y ntpdate
# 进行时间同步
[root@oldboy-yang-01 oldboy]# ntpdate ntp1.aliyun.com7 Aug 18:15:47 ntpdate[2764]: step time server 120.25.115.20 offset 30365.520598 sec
# 最后检查
date命令查看时间提示offset xxx sec表示同步成功

ntp1.aliyun.com 是阿里云的时间服务器之一.未来也可以自 己搭建.

ntp1..ntp7

6.3 修改时区

# 修改时区
timedatectl set-timezone   Asia/Shanghai
# 查看时区
[root@oldboy-yang-01 oldboy]# timedatectl status Local time: 三 2024-08-07 18:20:44 CSTUniversal time: 三 2024-08-07 10:20:44 UTCRTC time: 三 2024-08-07 18:20:28Time zone: Asia/Shanghai (CST, +0800)NTP enabled: n/a
NTP synchronized: noRTC in local TZ: noDST active: n/a

6.4 应用实站

  • date应用场景:企业备份的时候,给压缩包加上时间

    创建文件或目录,给文件名或目录名字加上个时间
    
  • 特殊符号:`` , 反引号里面的命令会被优先执行

[root@oldboy-yang-01 oldboy]# which find
/usr/bin/find
[root@oldboy-yang-01 oldboy]# ll /usr/bin/find
-rwxr-xr-x. 1 root root 199304 10月 31 2018 /usr/bin/find
[root@oldboy-yang-01 oldboy]# ll `which find`
-rwxr-xr-x. 1 root root 199304 10月 31 2018 /usr/bin/find

ll which find 的执行流程:

1. 先执行which命令找出find命令的绝对路径位置

2. 输出这个位置(显示)

3. 运行ll 命令 find命令的位置

  • 创建backup-etc-今天的年-月-日.txt
date +%F
touch  backup-etcxxxxx.txttouch backup-etc-`date +%F'.txt
ls -l backup-etc-2022-07-19.txt

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/779496.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

JSOI2024 游记

UPD:其实是早就写好了的,不过现在差不多想发了。JSOI2024 游记 Day ?~Day -1 省选前的心态算是比较失落,每次点人都发现自己进不了一点。不过今年还是得打,尽力而为吧。 比赛前一周基本补完了之前落下的联考,打的还算可以。 湖北省选模拟,打了个 Day2,非常没有水平的 1…

形式参数和返回值类型的对比

方法的形式参数形式参数是基本数据类型形式参数是引用类型 (1)形式参数是基本数据类型 基本数据类型作为方法的形参,形式参数的改变不影响实际参数public static void main(String[] args) {int a = 10;int b = 20;System.out.println(a);System.out.println(b);change(a, b);…

莽撞闯荡的6周年,也就是弹指一挥间

6年也就是弹指一挥间,时间过得飞快。6年前的明天,也就是2018年的8月8日,我离开了服务12年的腾讯开始探索自己的梦想-参见《回顾4180天在腾讯使用C#的历程,开启新的征途》。到今天,已经整整走过了6年,这6年还是围绕着C# 开展业务和活动。在这个6周年的特殊日子,总感觉要说…

七牛云私有空间图片上传、下载

导航引言 总体思路 七牛云相关的配置文件 获取七牛云上传token相关类定义 核心代码实现获取七牛云图片下载链接公开空间 私有空间 核心代码实现结语 参考引言我们在成长,代码也要成长。多媒体图片在各种网站、小程序和app中应用广泛,同时也大大增强了用户体验。 随着云服务的…

2024.08.07 记录一下面试。

这次面试面试官就说我们想要基础好的,所以就问了一堆基础问题。这里的知识点图片都是来自JavaGuide,如果不是图片我会贴一下链接,但是很有可能我都不会解答。Java 面试指南 | JavaGuide按我能想到的写。1.手动获得spring配置文件application.yml文件。答:最普遍的方法就是V…

sql注入一些学习笔记

以下内容主要是作为自己学习笔记记录使用,可能会有错误,欢迎指正,所有内容仅供参考,部分名词内容解释来自其他博主或chatgpt,如有侵权,联系删除 一些基础的表 information_schema.schemataschemata_name其实就是databasesCatalog_name 每个Catalog包含多个Schema,每个Sc…

Ubuntu Linux 搭建邮件服务器(postfix + dovecot)

准备工作 1. 一台公网服务器(需要不被服务商限制发件收件的,也就是端口25、110、143、465、587、993、995不被限制),如有防火墙或安全组需要把这些端口开放 2. 一个域名,最好是com cn org的一级域名 3. 域名备案(如果服务器是国外的则不需要备案) 一、配置域名解析 1. 登…

洛谷P1064 金明的预算方案——题解

洛谷P1064题解传送锚点摸鱼环节 [NOIP2006 提高组] 金明的预算方案 题目描述 金明今天很开心,家里购置的新房就要领钥匙了,新房里有一间金明自己专用的很宽敞的房间。更让他高兴的是,妈妈昨天对他说:“你的房间需要购买哪些物品,怎么布置,你说了算,只要不超过 \(n\) 元钱…

从0到1:穿透 SpringCloud 工业级 底座工程的架构和实操,让自己实力猛增

文章很长,且持续更新,建议收藏起来,慢慢读!疯狂创客圈总目录 博客园版 为您奉上珍贵的学习资源 : 免费赠送 :《尼恩Java面试宝典》 持续更新+ 史上最全 + 面试必备 2000页+ 面试必备 + 大厂必备 +涨薪必备 免费赠送 :《尼恩技术圣经+高并发系列PDF》 ,帮你 实现技术自由,…

最小二乘法原理推导+代码实现[Python]

0.前言本文主要介绍了最小二乘法公式推导,并且使用Python语言实现线性拟合。 读者需要具备高等数学、线性代数、Python编程知识。 请读者按照文章顺序阅读。 绘图软件为:geogebra5。1.原理推导 1.1应用 最小二乘法在购房中的应用通常涉及房价预测和房屋定价方面。这种统计方法…

SpringBoot项目中HTTP请求体只能读一次?试试这方案

问题描述 在基于Spring开发Java项目时,可能需要重复读取HTTP请求体中的数据,例如使用拦截器打印入参信息等,但当我们重复调用getInputStream()或者getReader()时,通常会遇到类似以下的错误信息:大体的意思是当前request的getInputStream()已经被调用过了。那为什么会出现这…

类与类之间的基本关系

类与类之间的基本关系 类与类之间的六种关系 一、继承关系继承指的是一个类(称为子类、子接口)继承另外的一个类(称为父类、父接口)的功能,并可以增加它自己的新功能的能力。在Java中继承关系通过关键字extends明确标识,在设计时一般没有争议性。在UML类图设计中,继承用…