首页 > 其他分享 >日志查询4剑客

日志查询4剑客

时间:2024-08-07 22:27:31浏览次数:8  
标签:sort oldboy 01 查询 剑客 linux 日志 root yang

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学院    20000
 oldli 18  linux学院   21000
 oldgirl 22  linux学院   30000
 old3 7 linux学院  4040
 old2 7 linux学院  30300
 old1 7 linux学院  50000
 old4 7 linux学院  30000
 old5 8 linux学院  25000
 old6 8 linux学院  15000

 [root@oldboy-yang-01 oldboy]# sort -rnk2 day005-08-sort.txt 
oldboy 40 linux学院    20000
 oldgirl 22  linux学院   30000
 oldli 18  linux学院   21000
 old6 8 linux学院  15000
 old5 8 linux学院  25000
 old4 7 linux学院  30000
 old3 7 linux学院  4040
 old2 7 linux学院  30300
 old1 7 linux学院  50000


[root@oldboy-yang-01 oldboy]# sort -r -n -k2 -k4 day005-08-sort.txt 
oldboy 40 linux学院    20000
 oldgirl 22  linux学院   30000
 oldli 18  linux学院   21000
 old5 8 linux学院  25000
 old6 8 linux学院  15000
 old1 7 linux学院  50000
 old2 7 linux学院  30300
 old4 7 linux学院  30000
 old3 7 linux学院  4040

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

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

  • sort 20k 题目
cat  >/oldboy/sort-20k.txt EOF
 192.168.3.1 00:0F:AF:81:19:1F
 192.168.3.2 00:0F:AF:85:6C:25
 192.168.3.3 00:0F:AF:85:70:42
 192.168.2.20 00:0F:AF:85:55:DE
 192.168.2.21 00:0F:AF:85:6C:09
 192.168.2.22 00:0F:AF:85:5C:41
 192.168.0.151 00:0F:AF:85:6C:F6
 192.168.0.152 00:0F:AF:83:1F:65
 192.168.0.153 00:0F:AF:85:70:03
 192.168.1.10 00:30:15:A2:3B:B6
 192.168.1.11 00:30:15:A3:23:B7
 192.168.1.12 00:30:15:A2:3A:A1
 192.168.1.1 00:0F:AF:81:19:1F
 192.168.2.2 00:0F:AF:85:6C:25
 192.168.3.3 00:0F:AF:85:70:42
 192.168.2.20 00:0F:AF:85:55:DE
 192.168.1.21 00:0F:AF:85:6C:09
 192.168.2.22 00:0F:AF:85:5C:41
 192.168.0.151 00:0F:AF:85:6C:F6
 192.168.1.152 00:0F:AF:83:1F:65
 192.168.0.153 00:0F:AF:85:70:03
 192.168.3.10 00:30:15:A2:3B:B6
 192.168.1.11 00:30:15:A3:23:B7
 192.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
blood


root@oldboy-yang-01 oldboy]# uniq -c uniq.txt 
      1 ldboy
      5 oldboy
      5 lidao
      4 smile
      4 blood

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

先sort , 然后uniq

# 新建测试文件
oldboy
 oldboy
 oldboy
 oldboy
 lidao
 lidao
 smile
 blood
 blood
 oldboy
 oldboy
 lidao
 lidao
 lidao
 smile
 smile
 smile
 blood
 blood
 
# 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-19
 full 可以理解为完整的日期
 
 
按照指定格式显示日期  年月日  20221111
Year
month
day
date + %Y%m%d
20220719


显示当前时间 时:分:秒
Hour
Mintue
Second
date  +%T #T time
date +%H:%H:%M:%S

 显示当前日期为 年-月-日_周几
 date +%F_%w
 2022-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.com
 7 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 CST
  Universal time: 三 2024-08-07 10:20:44 UTC
        RTC time: 三 2024-08-07 18:20:28
       Time zone: Asia/Shanghai (CST, +0800)
     NTP enabled: n/a
NTP synchronized: no
 RTC in local TZ: no
      DST 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.txt

touch backup-etc-`date +%F'.txt
ls -l backup-etc-2022-07-19.txt

标签:sort,oldboy,01,查询,剑客,linux,日志,root,yang
From: https://www.cnblogs.com/liaofy/p/18347987

相关文章

  • ELK日志系统
    ELK日志系统ELK:是一套完整的日志集中处理方案。E:elasticsearchES分布式索引型非关系数据库存储logstash输出的日志,全文检索引擎。保存的格式json格式L:logstash基于Java开发的,数据收集引擎,日志的收集,可以对数据进行过滤,分析,汇总,以标准格式输出K:Kiabana是ES的可视化......
  • 域名被墙如何查询检测?
    在当今数字化的时代,域名是网站的重要标识,是用户访问网站的入口。然而,有时候域名可能会遭遇被墙的情况,这给网站所有者和用户带来了极大的困扰。首先,我们需要了解什么是域名被墙。域名被墙,通常是指域名在国内无法正常访问,而在国外可以访问。这种情况可能是由于网站内容违反了相关法......
  • 日志分割脚本
    tomcat日志分割脚本autocut.log #!/bin/sh#$0:取当前运行脚本的所在路径#$(dirname"$0"):取返回的父目录的值#readlink-f:递归跟随给出文件名的所有符号链接以标准化log_path=$(readlink-f"$(dirname"$0")"/logs)d=`date+%Y%m%d`d4=`date+%H:%M:%S`#获取七天之前......
  • c# net6创建API项目 日志管理log4net的用法
    一、program.cs//配置log4netXmlConfigurator.Configure(newFileInfo("log4net.config"));二、公共类LogHelper.csnamespaceElecInvoice.Common{publicclassLogHelper{publicstaticreadonlylog4net.ILogloginfo=log4net.LogManage......
  • 关联子查询
    需求:查询不同职位大于平均工资的员工表结构:CREATETABLE`t_employee`(`id`int(11)NOTNULLAUTO_INCREMENTCOMMENT'主键',`name`varchar(255)COLLATEutf8mb4_binDEFAULTNULLCOMMENT'名字',`job`varchar(255)COLLATEutf8mb4_binDEFAULTNULLCOMMENT......
  • Linux三剑客之grep
    介绍Linuxgrep(globalregularexpression)命令用于查找文件里符合条件的字符串或正则表达式。grep是行过滤工具,用于根据关键字进行行过滤,包含关键字的行过滤出来。根据模式去搜索文本,并将符合模式的文本行显示出来。语法grep[options]pattern[files]options:选项参数......
  • Java计算机毕业设计基于Android的公交线路状态查询系统(开题报告+源码+论文)
    本系统(程序+源码)带文档lw万字以上 文末可获取一份本项目的java源码和数据库参考。系统程序文件列表开题报告内容研究背景随着城市化进程的加速,公共交通系统成为了城市居民日常出行不可或缺的一部分。然而,传统的公交线路查询方式往往依赖于纸质地图、公交站牌或电话查询,这......
  • impdp/expdp报错: ORA-39064: 无法写入日志文件 ORA-29285: 文件写入错误
    问题现象Windows服务器导入/导出Oracle11g数据库出现如下报错提示,输出的日志文件从报错位置往后不再输出。ORA-39064:无法写入日志文件ORA-29285:文件写入错误问题原因原因是客户端环境变量NLS_LANG与数据库字符集不一致,而数据泵在写日志文件的时候使用的是————数据......
  • ORACLE 查询条件出现关键字:&
    SQLselect1fromdualWHERExxxIN('AAA&SSS')编译器提示原因和解决方法在OracleSQL查询中,‌如果查询条件包含特殊字符如&,‌通常需要进行转义处理,‌以确保查询语句能被正确解析&在Oracle中可能被视作替换变量的一部分,‌因此直接使用时可能导致查询出错为了正常查询......
  • 帝国CMS中两个关联字段查询结果不一致
    1.检查数据完整性确保关联字段中没有空值或不完整的数据。确认关联表的字段类型和长度是否一致。检查关联表的唯一标识符字段是否具有唯一值。2.修复数据不一致手动更新关联字段中的空值或不完整数据。使用SQL查询语句更新或删除有问题的记录。考虑使用数据清理工具修......