【背景】

排查线上环境问题,少不了去线上查日志。而使用什么命令,能快速准确地查到我们需要查找地日志信息,也是我们需要掌握的一项技能。

【命令】

Linux查看命令有多种:tail,head,cat,tac,more

(一) tail 命令

tail [ -f ] [ -c Number | -n Number | -m Number | -b Number | -k Number ] [ File ]

参数:
1)-f 循环读取
2)-q 不显示处理信息
3)-v 显示详细的处理信息
4)-c Number 从 Number 字节位置读取指定文件
5)-n Number 从 Number 行位置读取指定文件
6)-m Number 从 Number 多字节字符位置读取指定文件,比方你的文件假设包括中文字,假设指定-c参数,可能导致截断,但使用-m则会避免该问题
7)-b Number 从 Number 表示的512字节块位置读取指定文件。
8)-k Number 从 Number 表示的1KB块位置读取指定文件。

上述命令中,都涉及到number,假设不指定,默认显示10行。Number前面可使用正负号,表示该偏移从顶部还是从尾部開始计算。

应用:
命令 含义
tail -f test.log 查看实时日志
tail -100f test.log 查看最后100行日志记录
tail -n 10 test.log 查询日志尾部最后10行的日志
tail -n 10 test.log 查询10行之后的所有日志
tail -fn 100 test.log 循环实时查看最后100行记录

(二) head 命令

功能跟tail是相反的,tail是查看后多少行日志

命令 含义
head -n 10 test.log 查询日志文件中的前10行日志
head -n -10 test.log 查询日志文件除了最后10行的其他所有日志

(三) cat 命令

功能
1)一次显示整个文件。 cat filename
2)创建一个文件。 cat > filename
3)将几个文件合并为一个文件。 cat file1 file2 > file

参数:
1)-n 由1开始对所有输出的行数编号
2)-b 和-n相似,只不过对于空白行不编号
3)-s 当遇到有连续两行以上的空白行,就代换为一行的空白行
4)-c<数目> 显示的字节数
5)-n<行数> 显示行数

应用
1)cat test.log | tail -n 1000 #输出test.log 文件最后1000行

2)cat -n test.log |grep “debug” #得到关键日志的行号

3)cat filename | tail -n 3000 | head -n 1000 #从第3000行开始,显示1000行。即显示3000~3999行

4)cat filename| head -n 3000 | tail -n 1000 #显示1000行到3000行

5)cat -n textfile1 > textfile2 #把 textfile1 的档案内容加上行号后输入 textfile2 这个档案里

6)cat -b textfile1 textfile2 >> textfile3 #把 textfile1 和 textfile2 的档案内容加上行号(空白行不加)之后将内容附加到 textfile3 里

7)cat error.log | grep -C 5 ‘nick’ 显示file文件里匹配foo字串那行以及上下5行
cat error.log | grep -B 5 ‘nick’ 显示foo及前5行
cat error.log | grep -A 5 ‘nick’ 显示foo及后5行

(四) tac 命令

功能
tac是将cat反写过来,它的功能跟cat相反,cat是由第一行到最后一行连续显示,而tac是由最后一行到第一行反向显示。

(五) more 命令

功能
类似cat,不过以一页一页形式显示。基本指令按空白键(space)往下一页显示,按返回键(back)往上一页显示,还有字符搜索功能(与vi相似)

参数
1)-num 一次显示的行数

2)-d 提示使用者,在画面下方显示 [Press space to continue, ‘q’ to quit.] ,如果使用者按错键,则会显示 [Press ‘h’ for instructions.] 而不是 ‘哔’ 声

3)-l 取消遇见特殊字元 ^L 时会暂停的功能

4)-f 计算行数时,以实际上的行数,而非自动换行过后的行数

5)-p 不以卷动的方式显示每一页,而是先清除萤幕后再显示内容

6)-c 跟 -p 相似,不同的是先显示内容再清除其他旧资料

7)-s 当遇到有连续两行以上的空白行,就代换为一行的空白行

8)-u 不显示下引号 (根据环境变数 TERM 指定的 terminal 而有所不同)

9) /pattern 在每个文档显示前搜寻该字串(pattern),然后从该字串之后开始显示

10) num 从第 num 行开始显示

应用
如果我们查找的日志很多,打印在屏幕上不方便查看, 使用more和less命令,
如: cat -n test.log |grep “条件” |more 这样就分页打印了,通过点击空格键翻页

命令 含义
more -s test.log 逐页显示日志,如有连续两行以上空白行则以一行空白行显示
more 20 test.log 从第 20 行开始显示日志内容

(六) grep 命令

功能:
上面几个命令都是用在查找文件方便,而在查找文件时,我们往往需要通过某些关键字查找,grep命令就可以帮助我们实现快速查找。

**参数: **
[options]主要参数:
-c:只输出匹配行的计数。
-I:不区分大 小写(只适用于单字符)。
-h:查询多文件时不显示文件名。
-l:查询多文件时只输出包含匹配字符的文件名。
-n:显示匹配行及 行号。
-s:不显示不存在或无匹配文本的错误信息。
-v:显示不包含匹配文本的所有行。
pattern正则表达式主要参数:
: 忽略正则表达式中特殊字符的原有含义。
^:匹配正则表达式的开始行。
$: 匹配正则表达式的结束行。
<:从匹配正则表达 式的行开始。

:到匹配正则表达式的行结束。
[ ]:单个字符,如[A]即A符合要求 。
[ - ]:范围,如[A-Z],即A、B、C一直到Z都符合要求 。
。:所有的单个字符。

  • :有字符,长度可以为0。

操作:
1、或操作
grep -E ‘123|abc’ filename // 找出文件(filename)中包含123或者包含abc的行
egrep ‘123|abc’ filename // 用egrep同样可以实现
awk ‘/123|abc/’ filename // awk 的实现方式

2、与操作
grep pattern1 files | grep pattern2 :显示既匹配 pattern1 又匹配 pattern2 的行。
cat log.txt | grep 条件一 | grep 条件二 | grep 条件三;

3、统计符合条件的个数
*.log -------当前目录下所有以.log结尾的日志
grep word1 *.log | grep word2 | wc -l

分页查看符合条件的内容

grep word1 *.log | grep word2 | more

4、其他操作
grep -i pattern files :不区分大小写地搜索。默认情况区分大小写,
grep -l pattern files :只列出匹配的文件名,
grep -L pattern files :列出不匹配的文件名,
grep -w pattern files :只匹配整个单词,而不是字符串的一部分(如匹配‘magic’,而不是‘magical’),
grep -C number pattern files :匹配的上下文分别显示[number]行,

5、.gz压缩包搜索
搜索后缀为.gz的压缩包的时候,将grep换成zgrep 即可

应用
1)more joint.log | grep ‘60007746’ #根据某退货号查询日志

很多时候,我们都需要看到上下几行的日志,可以通过加相关参数实现。

2)more joint.log | grep -5 ‘60007746’ #打印匹配行的前后5行

3)more joint.log | grep -C 5 ‘60007746’ #打印匹配行的前后5行

4)more joint.log | grep -A 5 ‘60007746’ #打印匹配行的后5行

5)more joint.log | grep -B 5 ‘60007746’ #打印匹配行的前5行

6)cat -n umltech-scan |grep ‘reqBody’ #在日志文件中查找某个字符串:cat -n 日志文件 |grep ‘查找内容’,如果内容太多可以通过后面加more,通过空格查看下一页

7)cat -n umltech-scan |grep ‘reqBody’>/test #将按条件查询到的日志内容保存到文件中:cat -n 日志文件|grep ‘查找内容’ >保存位置

(七)sed

应用
sed -n ‘5,10p’ filename 这样你就可以只查看文件的第5行到第10行。

sed -n ‘/2018-02-06 15:05:38/,/2018-02-06 15:20:38/p’ umltech-scan
按时间段查询日志:sed -n ‘/开始时间/,/结束时间/p’ umltech-scan,时间格式为"yyyy-mm-dd hh:mm:ss"

(八)vi

应用
(1)打开文件:
vi filename :打开或新建文件,并将光标置于第一行首
vi +n filename :打开文件,并将光标置于第n行首
vi + filename :打开文件,并将光标置于最后一行首
vim -R filename :以只读方式打开文件

(2)查找文件内容关键字方法:
/查找字符串 :从光标开始处向文件尾搜索pattern
?查找字符串 :从光标开始处向文件首搜索pattern
n:查找下一个
N:查找上一个

(3)屏幕翻滚类命令
Ctrl+u:向文件首翻半屏
Ctrl+d:向文件尾翻半屏
Ctrl+f:向文件尾翻一屏
Ctrl+b;向文件首翻一屏
nz:将第n行滚至屏幕顶部,不指定n时将当前行滚至屏幕顶部。
nG:到第n行   
0 :移到行首 
G :到最后一行

(4)撤销回退
u :撤销上一步的操作
Ctrl+r :恢复上一步被撤销的操作
输入“u”两次 :文本恢复原样

(九)ag:

ag:比grep、ack更快的递归搜索文件内容

安装:sudo apt-get install silversearcher-ag
RHEL7+
rpm -Uvh http://download.fedoraproject.org/pub/epel/7/x86_64/e/epel-release-7-5.noarch.rpm
yum install the_silver_searcher

RHEL7-
wget ftp://ftp.pbone.net/mirror/ftp5.gwdg.de/pub/opensuse/repositories/utilities/CentOS_6/x86_64/the_silver_searcher-0.14-1.1.x86_64.rpm
rpm -ivh the_silver_searcher-0.14-1.1.x86_64.rpm

使用
命令行使用
ag HelloWorld

ag HelloWorld path/to/search

ag -g 类似于 find . -name

ag -i PATTERN: 忽略大小写搜索含PATTERN文本

ag -A PATTERN:搜索含PATTERN文本,并显示匹配内容之后的n行文本,例如:ag -A 5 abc会显示搜索到的包含abc的行以及它之后5行的文本信息。

ag -B PATTERN:搜索含PATTERN文本,并显示匹配内容之前的n行文本

ag -C PATTERN:搜索含PATTERN文本,并同时显示匹配内容以及它前后各n行文本的内容。

ag --ignore-dir

:忽略某些文件目录进行搜索。

ag -w PATTERN: 全匹配搜索,只搜索与所搜内容完全匹配的文本。

ag --java PATTERN: 在java文件中搜索含PATTERN的文本。

ag --xml PATTERN:在XML文件中搜索含PATTERN的文本。

man ag:使用方法请查看帮助:

【总结】

熟悉常用的Linux命令也是我们必须要掌握的一项技能,这样在查找问题过程中也能更加高效速度。

参考:
https://blog.csdn.net/hu_zhiting/article/details/88319528
https://jingyan.baidu.com/article/656db918fccd01e381249c2b.html
https://blog.csdn.net/lychbeyond/article/details/41042483
http://blog.sina.com.cn/s/blog_65e13da00100of1f.html
https://blog.csdn.net/u011641008/article/details/79527929
https://www.cnblogs.com/peida/archive/2012/12/05/2803591.html

九种linux查询日志命令总结相关推荐

  1. linux查询日志命令加过滤,Linux记录-筛选日志sed、find、tail,du,awk命令

    1.查看某一段时间的日志 #cat hdfs-audit.log | sed -n '/2018-04-11 10:00:00/,/2018-04-11 10:01:00/ p' | more   - ...

  2. linux查询日志命令加过滤,日志查看技巧之筛选[linux命令集][排查篇]

    引语:相信大家都会偶尔遇到要排查问题发生的原因的情况,那这种时候,我们最有力后盾就是日志文件了,所以谨记日志记录真的很重要.但是日志文件往往是很大的文件,而且里面有太多的东西可能不是我们需要的,如无数 ...

  3. 《Reids 设计与实现》第十九章 慢查询日志

    <Reids 设计与实现>第十九章 慢查询日志 文章目录 <Reids 设计与实现>第十九章 慢查询日志 一.简介 二.慢查询记录的保存 三.慢查询日志的阅览和删除 四.添加新 ...

  4. linux导出日志命令_Linux中的导出命令

    linux导出日志命令 In this guide, we will look at the export command in Linux. Export is a built-in command ...

  5. linux tail日志命令,linux tail命令及其它日志查看命令的用法

    当日志文件存储日志很大时,我们就不能用vi直接进去查看日志,需要Linux的命令去完成我们的查看任务. Log位置: /var/log/message 系统启动后的信息和错误日志,是Red Hat L ...

  6. linux 查看日志命令总结

    目录 单纯的查看 head tail cat tac 综合查看 more less grep,awk,sed三剑客 grep sed awk 查找文件命令 whereis find locate 单纯 ...

  7. MySQL高级知识(九)——慢查询日志

    前言:慢查询日志是MySQL提供的一种日志记录,它记录MySQL中响应时间超过阈值的语句,具体指运行时间超过long_query_time值的sql语句,该sql语句会被记录到慢查询日志中.慢查询日志 ...

  8. linux查询日志grep,linux grep日志查询

    首页 > 系统相关> 文章详细 linux grep日志查询 2018-09-14 16:52:07阅读:135来源:互联网 标签: ll access.2018-09-*.gz zcat ...

  9. Linux || 查询类命令

    查找类的命令:     which和whereis 只能查找Linux里的命令,精确查找,到PATH变量的路径查找 locate:可以查找命令和普通文件或文件夹,模糊查找,到自己的数据库里查找(整个/ ...

最新文章

  1. 关于移动端rem适配
  2. 剑指offer:扑克牌顺子
  3. vscode个人配置
  4. 第10周项目实践 线索二叉树的建立及遍历
  5. netty系列之:netty对SOCKS协议的支持
  6. 2022春招马蜂窝旅游网第一轮面试 面经
  7. linux查看tcp络连接日志,Linux监控TCP连接数并触发日志记录
  8. RIP 图形、图像解析器
  9. Linux学习笔记--终端命令
  10. nginx + gunicorn + django 2.0 踩坑
  11. 计算机组成原理什么是模,计算机组成原理中字、位元组、位各指什么?单位用什么表示?...
  12. 保护电路:简单的限流保护电路图
  13. 各自然带代表植被_植被带气候
  14. SAP中英文转换--中文转英文
  15. 什么是浏览器指纹,如何完整修改浏览器指纹?
  16. 知识图谱在应用过程中,主要面临哪些困难?
  17. Unity项目--LoyPoly风格的FPS Demo(附试玩地址)
  18. P93-好玩游戏的物品清单
  19. 联想笔记本重装win11系统后恢复fn+q热键
  20. 小事认真,大事才会卓越

热门文章

  1. 基础一:一切都是对象
  2. pytorch:线性回归实战
  3. 安徽师大附中%你赛day9 T3 贵 解题报告
  4. 关于3分频电路的讨论
  5. Django + mysql + 微信 抢票之本地环境搭建
  6. PS笔记:调色部分理论基础
  7. 焦距換算倍率(Focal length ratio)
  8. spark中RSS工具简介
  9. [本体论][UML][统一建模语言][软件建模][OWL]从本体论到UML到OWL
  10. javafx 教程_何时使用JavaFX代替HTML