在开发的过程中,会发现有一些同学还是不大会去线上查看日志,在日常开发的工作中查看日志是定位线上错误的最有效的方式,为了帮大家弄清除这个问题,阿丹就来聊一聊,从今天开始开个新坑linux指令,有兴趣的同学可以跟着阿丹学习,阿丹会有时间就更新。
tail
tail 是一种非常常见的 Unix/Linux 命令,它用于查看文件的最后一部分内容。它是通过管道命令(pipe)来实现的,并且可以接受多种参数来定制其行为。
在这个基本用法中,file 是你要查看的文件路径,可以是一个具体的文件路径,也可以是一个文件列表或通配符。例如:
显示文件 'test.txt' 最后10行的内容
tail test.txt
显示当前目录下所有 .txt 文件的最后10行
ls *.txt | xargs tail
显示 /var/log 目录下所有日志文件的最后10行
find /var/log -type f | xargs tail
显示文件的最后几行。这里的 number 可以是一个整数或一个负数,代表从末尾算起的距离。例如:
显示最后5行
tail -n 5 test.txt
显示倒数第5行开始的内容
tail -n +5 test.txt
显示倒数第6行到最后的内容
tail -n +6 test.txt
显示文件的最后几个字符。这里的 number 表示字符的数量。例如:
显示最后5个字符
tail -c 5 test.txt
显示倒数第5个字符开始的内容
tail -c +5 test.txt
显示倒数第6个字符到最后的内容
tail -c +6 test.txt
实时追踪文件变化。当文件增大时,tail 将实时显示新的数据。例如:
实时追踪文件 'test.txt'
tail -f test.txt
这个是平时最长使用的语句。用于查看实时日志。
静默模式下追踪文件 'test.txt'
tail -q -f test.txt
一般情况下追踪文件 'test.txt'
tail -f test.txt
合并空行之后,查看最后10行
tail -s test.txt
加上行号之后,查看最后10行
tail -S test.txt
显示最后5个字节
tail -b 5 test.txt
显示倒数第5个字节开始的内容
tail -b +5 test.txt
显示倒数第6个字节到最后的内容
tail -b +6 test.txt
是一个非常实用的命令行工具,它可以从文本文件中搜索并显示匹配特定模式的行。它具有丰富的选项和功能,可以在很多场合中发挥作用,比如搜索文本文件、查找错误消息、过滤输出等等。
grep
的一些主要用法基础用法:
grep pattern file
在这个基本用法中,pattern
是要搜索的模式,file
是你要搜索的文件。例如:
# 在 'test.txt' 中搜索 'Hello, World!'
grep 'Hello, World!' test.txt
# 忽略大小写搜索 'Hello, World!'
grep -i 'hello, world!' test.txt
# 显示不包含 'Hello, World!' 的行
grep -v 'Hello, World!' test.txt
# 匹配整个单词 'Hello, World!'
grep -w 'Hello, World!' test.txt
# 显示匹配行后2行
grep -A 2 'Hello, World!' test.txt
# 显示匹配行前2行
grep -B 2 'Hello, World!' test.txt
# 显示匹配行及其上下文2行
grep -C 2 'Hello, World!' test.txt
grep
支持基本正则表达式(BRE)、扩展正则表达式(ERE)和 Perl 兼容正则表达式(PCRE)
# 匹配 'Hello' 和 'World'
grep -e 'Hello' -e 'World' test.txt
# 使用正则表达式匹配 'Hello' 和 'World'
grep -E 'Hello|World' test.txt
# 使用 Perl 兼容正则表达式匹配 'Hello' 和 'World'
grep -P '(Hello|World)' test.txt
grep
支持在多个文件中搜索模式,也可以通过管道将多个命令连接起来
# 在多个文件中搜索 'Hello, World!'
grep 'Hello, World!' test.txt another_file.txt
# 使用管道在多个文件中搜索 'Hello, World!'
cat test.txt another_file.txt | grep 'Hello, World!'
grep
和 tail
是两个非常有用的命令行工具,它们都可以在文本文件中搜索模式,但各有不同的功能。 grep
主要用于搜索文本文件中特定的模式,并返回所有匹配的行;而 tail
则是显示文件的末尾部分。
我们可以把这两个命令结合起来使用,以达到更好的效果。
# 实时追踪 'test.txt' 并搜索 'Hello, World!'
tail -f test.txt | grep 'Hello, World!'
# 在 'test.txt' 和 'another_file.txt' 中搜索 'Hello, World!'
tail test.txt another_file.txt | grep 'Hello, World!'
# 只看匹配行的最后10行
tail -n 10 test.txt | grep 'Hello, World!'
# 统计 'Hello, World!' 出现的次数
grep -o 'Hello, World!' test.txt | wc -l
总结:
tail经常来看文件追加等等、grep经常用来查看搜索指定的数据。在实战中可以使用更多的组合来完成需要的日志查看。