Linux每周几个命令--日志查看篇
本本摘自:https://www.jianshu.com/p/1a3f51202518
作为后端开发人员,经常需要和日志打交道,查看日志也就成了一个技术活,该篇总结常用查看日志命令。
1、tail
这个命令对于大文件处理都是很好的,因为并不是处理全部内容,所以速度会很快,尤其是tail -f 这个指令,实时查看日志时很实用。
1.1、命令格式:tail [参数] 文件名
1.2、命令作用:查看文件末尾内容,实时刷新日志,从第n行输出日志。
1.3、命令参数:
-f 当文件增长时,输出后续添加的数据,也就是实现实时刷新日志 -n 输出最后的n行,默认是10行 --pid 与-f配合,表示在进程ID,PID死掉之后结束
1.4、使用示例:
查看日志最后20行内容
[root@VM_105_120_centos logs]# tail -n 20 catalina.out
实时刷新日志
[root@VM_105_120_centos logs]# tail -f catalina.out
从第100行显示日志,对于大文件很不实用
[root@VM_105_120_centos logs]# tail -n +100 catalina.out
2、head
这个命令对于大文件处理都是很好的,因为并不是处理全部内容,所以速度会很快。
2.1、命令格式:head [参数] 文件名
2.2、命令作用:查看文件开头n行
2.3、命令参数:
-n 显示的行数
2.4、使用示例:
查看文件开头前10行
[root@VM_105_120_centos logs]# head -n 10 catalina.out
3、more
分页显示,而且还有类似vim的操作方式,对于大文件日志很有用处。
3.1、命令格式:more [-dlfpcsu] [-num] [+/pattern] [+linenum] [fileNames..]
3.2、命令参数:
-num 一次显示的行数 -d 提示使用者,在画面下方显示 [Press space to continue, 'q' to quit.] ,如果使用者按错键,则会显示 [Press 'h' for instructions.] 而不是 '哔' 声 -l 取消遇见特殊字元 ^L(送纸字元)时会暂停的功能 -f 计算行数时,以实际上的行数,而非自动换行过后的行数(有些单行字数太长的会被扩展为两行或两行以上) -p 不以卷动的方式显示每一页,而是先清除萤幕后再显示内容 -c 跟 -p 相似,不同的是先显示内容再清除其他旧资料 -s 当遇到有连续两行以上的空白行,就代换为一行的空白行 -u 不显示下引号 (根据环境变数 TERM 指定的 terminal 而有所不同) +/pattern 在每个文档显示前搜寻该字串(pattern),然后从该字串之后开始显示 +num 从第 num 行开始显示 fileNames 欲显示内容的文档,可为复数个数
3.3、配合指令:
Enter 向下n行,需要定义。默认为1行 空格键 向下滚动一屏 Ctrl+B 返回上一屏 = 输出当前行的行号 :f 输出文件名和当前行的行号 !命令 调用Shell,并执行命令 q 退出more more, less 都具备查找功能,按/ 然后输入要找的字串,再按 Enter 即可,按 n(next) 会继续找,大写的 N 则是往回(上)找
3.4、使用示例:
从第20w行分页显示日志
[root@VM_105_120_centos logs]# more +200000 catalina.out
4、less
4.1、命令格式:less [参数] 文件
4.2、命令作用:less命令可以随意移动查看文件,并且不会加载整个文件,所以更常用。
4.3、命令参数:
-b <缓冲区大小> 设置缓冲区的大小 -e 当文件显示结束后,自动离开 -f 强迫打开特殊文件,例如外围设备代号、目录和二进制文件 -g 只标志最后搜索的关键词 -i 忽略搜索时的大小写 -m 显示类似more命令的百分比 -N 显示每行的行号 -o <文件名> 将less 输出的内容在指定文件中保存起来 -Q 不使用警告音 -s 显示连续空行为一行 -S 行过长时间将超出部分舍弃 -x <数字> 将"tab"键显示为规定的数字空格 /字符串:向下搜索"字符串"的功能 ?字符串:向上搜索"字符串"的功能 n:重复前一个搜索(与 / 或 ? 有关) N:反向重复前一个搜索(与 / 或 ? 有关) b 向后翻一页 d 向后翻半页 h 显示帮助界面 Q 退出less 命令 u 向前滚动半页 y 向前滚动一行 空格键 滚动一行 回车键 滚动一页 [pagedown]: 向下翻动一页 [pageup]: 向上翻动一页
4.4、使用示例:同more
5、sed
sed命令很强大,这里对于日志来说最有用的是查看指定时间段的日志。
查看在这两个时间段的日志
sed -n ‘/2010-11-17 09:25:55/,/2010-11-17 09:25:55/p’ logfile
并且可以使用正则表达式
sed -n ‘/2010-11-17 09:[0-9][0-9]:[0-9][0-9]/,/2010-11-17 16:[0-9][0-9]:[0-9][0-9]/p’ logfile
如果量还是很多的话,就配合less指令,简直完美
sed -n '/08:00:00/,/10:00:00/p' catalina.out | less
再者sed可以批量替换文本内容,这个还是很常用的功能。比如下面命令替换niudear为hero
ps -ef | sed 's/niudear/hero/g'
6、awk
awk命令多用于复杂情况的筛选信息,其是每读入一行就处理,下面举几个例子。
6.1、打印指定行号内容,列号内容
在awk中行号使用变量NR处理,并且前面可以是逻辑表达式。
NR==3||NR==4 指第三行或者第四行,另外还内置的列变量NF
$0 是指当前行全部内容,$1对应第一行,依次类推$2为第二行
该指令为打印第三行和第四行的内容。
sudo netstat -punt | awk 'NR==3||NR==4 {print NR, $0}'
6.2、指定分隔符
-F参数可以指定分隔符对行元素进行切割
下面使用/对pwd后的输出进行切割
pwd | awk -F/ '{print $1,$2,$3}'
6.3、正则
#匹配第一列以r开头的内容 ps aux | awk '$1 ~/^r/ {printf $0"\n"}' #忽略大小写的 awk 'BEGIN{IGNORECASE=1} /this/' log.txt #取反匹配 awk '$2 !~ /th/ {print $2,$4}' log.txt
另外可以结合sort和uniq使用。更多内容可以参考菜鸟教程上面的
目前本人常用的就这些,对于cat指令,因为日志文件巨大,所以cat这种一下子读完的就不太适合了,查看配置文件利用cat还是很不错的。
其他资料:
posted on 2019-04-06 16:22 wenbin_ouyang 阅读(494) 评论(0) 收藏 举报
浙公网安备 33010602011771号