美文网首页Linux学习|Gentoo/Arch/FreeBSD
Linux每周几个命令(二)--日志查看篇

Linux每周几个命令(二)--日志查看篇

作者: 此博废弃_更新在个人博客 | 来源:发表于2017-02-05 21:24 被阅读435次

    Linux每周几个命令(二)--日志查看篇

    标签(空格分隔): linux


    作为后端开发人员,经常需要和日志打交道,查看日志也就成了一个技术活,该篇总结常用查看日志命令.

    1.tail和head

    这两个命令对于大文件处理都是很好地,因为并不是处理全部内容,所以速度会很快,尤其是tail -f 这个指令,实时查看日志时很实用.

    1.1 tail

    1.命令格式

    tail [参数] 文件名
    

    2.命令作用

    查看文件末尾内容,实时刷新日志,从第n行输出日志.
    

    3.命令参数

    -f 当文件增长时,输出后续添加的数据,也就是实现实时刷新日志
    -n 输出最后的n行,默认是10行
    --pid 与-f配合,表示在进程ID,PID死掉之后结束
    

    4.使用示例
    1.查看日志最后20行内容

    [root@VM_105_120_centos logs]# tail -n 20 catalina.out
    

    2.实时刷新日志

    [root@VM_105_120_centos logs]# tail -f catalina.out
    

    3.从第100行显示日志,对于大文件很不实用

    [root@VM_105_120_centos logs]# tail -n +100 catalina.out
    

    1.2 head

    1.命令格式

    head [参数] 文件名
    

    2.命令作用

    查看文件开头n行
    

    3.命令参数

    -n 显示的行数
    

    4.使用示例
    查看文件开头前10行

    [root@VM_105_120_centos logs]# head -n 10 catalina.out
    

    2.more和less

    more和less是非常常用的两个命令,两者都可以分页显示,而且还有类似vim的操作方式,对于大文件日志很有用处.

    2.1 more

    1.命令格式

    more [-dlfpcsu] [-num] [+/pattern] [+linenum] [fileNames..]
    

    2.命令作用

    Linux more 会以一页一页的形式显示,更方便使用者逐页阅读,而最基本的指令就是按空白键(space)就往下一页显示,按b键就会往回(back)一页显示,而且还有搜寻字串的功能(与 vi 相似)
    

    3.命令参数

    -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 欲显示内容的文档,可为复数个数
    

    配合指令:

    Enter 向下n行,需要定义。默认为1行
    空格键 向下滚动一屏
    Ctrl+B 返回上一屏
    = 输出当前行的行号
    :f 输出文件名和当前行的行号
    !命令 调用Shell,并执行命令
    q 退出more
    more, less 都具备查找功能,按/ 然后输入要找的字串,再按 Enter 即可,按 n(next) 会继续找,大写的 N 则是往回(上)找
    

    4.使用示例
    从第20w行分页显示日志

    [root@VM_105_120_centos logs]# more +200000 catalina.out
    

    2.2 less

    1.命令格式

    less [参数] 文件 
    

    2.命令作用

    less命令可以随意移动查看文件,并且不会加载整个文件,所以更常用.
    

    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.使用示例

    示例和more差不多,指令都类似vim

    3.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'
    

    4.awk

    awk命令多用于复杂情况的筛选信息,其是每读入一行就处理,下面举几个例子.

    4.1打印指定行号内容,列号内容

    在awk中行号使用变量NR处理,并且前面可以是逻辑表达式.
    NR==3||NR==4 指第三行或者第四行,另外还内置的列变量NF
    $0 是指当前行全部内容,$1对应第一行,依次类推$2为第二行
    该指令为打印第三行和第四行的内容.

    sudo netstat -punt | awk 'NR==3||NR==4 {print NR, $0}' 
    

    4.2指定分隔符

    -F参数可以指定分隔符对行元素进行切割
    下面使用/对pwd后的输出进行切割

    pwd | awk -F/ '{print $1,$2,$3}'
    

    4.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还是很不错的.

    另外文章命令使用来源于互联网资料.

    相关文章

      网友评论

        本文标题:Linux每周几个命令(二)--日志查看篇

        本文链接:https://www.haomeiwen.com/subject/wpzeittx.html