Linux tail 命令与日志查找应用场景技巧(转载)
前言tail是Linux中的一个常用命令,用于查看文件尾部的内容,它与head命令相对应。我们常用它来查看日志文件,通过-f参数可实时看文件的最新内容。tail命令格式与参数格式tail[选项…] [文件…]tail [-F | -f ] [-q] [-c # | -n #] [file …]12注:其中 # 代表数字的意思。参数解释参数解释-f--follow[={name|descriptor
前言
tail是Linux中的一个常用命令,用于查看文件尾部的内容,它与head命令相对应。我们常用它来查看日志文件,通过-f参数可实时看文件的最新内容。
tail命令格式与参数
格式
tail [选项…] [文件…]
tail [-F | -f ] [-q] [-c # | -n #] [file …]
1
2
注:其中 # 代表数字的意思。
参数解释
参数 解释
-f --follow[={name|descriptor}], 跟踪文件的增长,并实时输出所增长的数据;缺省选项参数可以是’文件名’或’描述符’
-n --lines=K, 输出最后 K 行,也可以使用 -n +K指定从第K行开始输出
-c --bytes=K, 输出最后 K 个字节;也可以使用 -c +K 指定从第K字节开始输出
-q --quiet, 不输出所提供文件的标头
注: 指定 K 时(字节数或行数)如果以+开头,则表示从第 K 行或字节处开始打印;否则,打印文件中的最后 K 项。K 还可以计量单位和乘数后缀的形式指定,如:b 512, kB 1000, K 1024, MB 10001000, M 10241024,GB 100010001000, G 102410241024,以及 T, P, E, Z, Y 等
tail 命令使用场景与日志查找技巧
场景1: 实时查看与关键字的相关的日志
通过-f参数,并配合grep命令,可以实现对文件内容的实时过滤。如:查看前几行、后几行、或前后几行,这时可以通过以下几个参数实现:
-A <显示行数> 除了显示符合匹配内容的那一行之外,并显示该行之后的内容
-B <显示行数> 在显示符合匹配内容的那一行之外,并显示该行之前的内容
-C <显示行数>或-<显示行数> 除了显示符合匹配内容的那一列之外,并显示该列之前后的内容
1
2
3
粟子:
监控info.log日志件,并查看含有迁移关键字的前后5行:
$ tail -f info.log|grep ‘迁移’ -C 5
// 或
$ tail -f info.log|grep ‘迁移’ -5
1
2
3
场景2:实时查看日志
通过-f参数,我们可以实时查看文件的新增内容:
$ tail -f info.log
1
注意:使用-f参数时不会中断文件监视,需要通过ctrl+c手动结束。
场景3:按位置查看文件内容
(1) 查看文件最后30行
$ tail -n -30 info.log
// 或
$ tail -n 30 info.log
// 或
$ tail -30 info.log
1
2
3
4
5
(2) 查看第30行至文件末尾:
$ tail -n +30 info.log
// 或
$ tail +30 info.log
1
2
3
(3) 查询日志文件除了最后30行的其他所有日志
head -n -30 info.log
1
(4) 配合head命令,实现查看文件的第10到20行:
$ head -20 info.log | tail -10
1
场景4:查找关键字附近的日志
首先,获取关键字的行号
#-n 显示行号
cat -n info.log |grep “关键字”
1
2
查找指定行号63829附近的日志
cat -n test.log |tail -n +63820|head -n 20
tail -n +63820表示查询63820行之后的日志
head -n 20 则表示在前面的查询结果里再查前20条记录
1
2
3
场景5:查找所有某种文件里符合条件的字符串
粟子: 在当前目录中,查找后缀有 file 字样的文件中包含 test 字符串的文件,并打印出该字符串的行
grep test *file
1
结果如下所示:
$ grep test test* #查找前缀有“test”的文件包含“test”字符串的文件
testfile1:This a Linux testfile! #列出testfile1 文件中包含test字符的行
testfile_2:This is a linux testfile! #列出testfile_2 文件中包含test字符的行
testfile_2:Linux test #列出testfile_2 文件中包含test字符的行
1
2
3
4
grep 命令同样可以加上 -A 或-B 或-C 的选项
-A是显示匹配后和它后面的n行。
-B是显示匹配行和它前面的n行。
-C是匹配行和它前后各n行。(Context, 上下文)
粟子:搜索info.log文件,找到匹配"@迁移"字串的行,显示该行后后面紧跟的4行。
grep -A 4 “@迁移” info.log
1
场景6:将查找的日志内容分页查看,或输出到一个文件中
(1) 分页查看
如果我们查找的日志很多,打印在屏幕上不方便查看, 使用more和less命令, 如: cat -n info.log |grep “迁移记录” |more 这样就分页打印了,通过点击空格键翻页
(2) 保存到文件中
使用 >xxx.txt将其保存到文件中,到时可以拉下这个文件分析.如:
cat -n info.log |grep “迁移记录” >xxx.txt
1
场景7:根据时间查找日志
可以先 grep ‘2020-06-17 16:17:20’ info.log 来确定日志中是否有该时间点,以确保下面第4步可以拿到日志。这个根据时间段查询日志是非常有用的命令。
#查找2020-07-03 21:21 ~ 2020-07-03 21:22内的日志
sed -n ‘/2020-07-03 21:21/,/2020-07-03 21:22/p’ info.log
#查找2020-07-03 21:21:34 ~ 2020-07-03 21:21:39内的所有日志
sed -n ‘/2020-07-03 21:21:34/,/2020-07-03 21:21:39/p’ info.log
更多推荐
所有评论(0)