日志是系统运行的重要文件,当系统发生错误,查看日志文件是非常有必要的;但是,当文件过大时,不能用vi 进行全部查看,就需要相应的日志查看命令,以下将分享 Linux查看日志 常用命令:

目录

tail

head 

grep

sed

cat

tac (反向列示)

tail

参数: 

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

参数解释: 

-f 该参数用于监视File文件增长。 

-c Number 从 Number 字节位置读取指定文件 

-n Number 从 Number 行位置读取指定文件。 

-m Number 从 Number 多字节字符位置读取指定文件,比方你的文件假设包括中文字,假设指定-c参数,可能导致截断,但使用-m则会避免该问题。 

-b Number 从 Number 表示的512字节块位置读取指定文件。 

-k Number 从 Number 表示的1KB块位置读取指定文件。 

File 指定操作的目标文件名称 

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

tail可运行文件一般在/usr/bin/以下。

实例: 

为了方便我新建了一个测试日志:test.log 

数据如下: 

test1
test2
test3
test4
test5
test6
test7
test8
test9
test10
test11
test12
test13
test14
test15
test16
test17
test18
test19
test20
test21
test22
test23
test24
test25

演示结果:

1、tail -f filename 说明:监视filename文件的尾部内容(默认10行,相当于增加参数 -n 10),刷新显示在屏幕上。退出,按下CTRL+C。

linux查看日志指令less linux查看日志信息命令_sed

2、tail -n 20 filename   说明:显示filename最后20行。

linux查看日志指令less linux查看日志信息命令_sed_02

3、tail -n +10 test.log    说明:查询10行之后的所有日志;

linux查看日志指令less linux查看日志信息命令_搜索_03

4、tail -f catalina.out     #实时查看运行日志

head 

head 仅仅显示前面几行

示例:

1、head -n 10  test.log   查询日志文件中的头10行日志;

linux查看日志指令less linux查看日志信息命令_linux查看日志指令less_04

2、head -n -10  test.log   查询日志文件除了最后10行的其他所有日志;

linux查看日志指令less linux查看日志信息命令_linux查看日志指令less_05

grep

grep(global search regular expression(RE) and print out the line,全面搜索正则表达式并把行打印出来)是一种强大的文本搜索工具,它能使用正则表达式搜索文本,并把匹配的行打印出来。

grep [options] 主要参数:

[options]主要参数:

-c:只输出匹配行的计数。

-I:不区分大 小写(只适用于单字符)。

-h:查询多文件时不显示文件名。

-l:查询多文件时只输出包含匹配字符的文件名。

-n:显示匹配行及 行号。

-s:不显示不存在或无匹配文本的错误信息。

-v:显示不包含匹配文本的所有行。

pattern正则表达式主要参数:

: 忽略正则表达式中特殊字符的原有含义。

^:匹配正则表达式的开始行。

$: 匹配正则表达式的结束行。

<:从匹配正则表达 式的行开始。

>:到匹配正则表达式的行结束。

[ ]:单个字符,如[A]即A符合要求 。

[ - ]:范围,如[A-Z],即A、B、C一直到Z都符合要求 。

。:所有的单个字符。

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

详情参考:http://man.linuxde.net/grep

sed

sed -n '5,10p' filename 说明:只查看文件的第5行到第10行。

linux查看日志指令less linux查看日志信息命令_正则表达式_06

cat

cat主要有三大功能:

1.一次显示整个文件。$ cat filename

2.从键盘创建一个文件。$ cat > filename 只能创建新文件,不能编辑已有文件.

3.将几个文件合并为一个文件: $cat file1 file2 > file

参数: 
-n 或 --number 由 1 开始对所有输出的行数编号 
-b 或 --number-nonblank 和 -n 相似,只不过对于空白行不编号 
-s 或 --squeeze-blank 当遇到有连续两行以上的空白行,就代换为一行的空白行 
-v 或 --show-nonprinting

例: 把 test.log 的档案内容加上行号后输入 test2.log 这个档案里

cat -n test.log > test2.log
vi test2.log

linux查看日志指令less linux查看日志信息命令_linux_07

linux查看日志指令less linux查看日志信息命令_sed_08

把 test.log 和 test2log 的档案内容加上行号(空白行不加)之后将内容附加到 test3.log 里。

cat -b test.log test2.log >> test3.log

linux查看日志指令less linux查看日志信息命令_正则表达式_09

linux查看日志指令less linux查看日志信息命令_搜索_10

 

注意:>意思是创建,>>是追加。千万不要弄混了。

把test3.log文件扔进垃圾箱,赋空值test3.log   

cat /dev/null >test3.log

 

linux查看日志指令less linux查看日志信息命令_正则表达式_11

 

linux查看日志指令less linux查看日志信息命令_linux_12



tac 是将 cat 反写过来,所以他的功能就跟 cat 相反, cat 是由第一行到最后一行连续显示在萤幕上, 而 tac 则是由最后一行到第一行反向在萤幕上显示出来!

cat test.log

tac test.log

linux查看日志指令less linux查看日志信息命令_正则表达式_13



综合运用:

A. tail test.log -n 10 -f 

linux查看日志指令less linux查看日志信息命令_搜索_14



未完待续。。。