精华内容
下载资源
问答
  • Linux 查看日志命令
    2022-03-07 14:19:31

    1.查看日志常用命令

        tail:  

           -n  是显示行号;相当于nl命令;例子如下:

                tail -100f test.log      实时监控100行日志

                tail  -n  10  test.log   查询日志尾部最后10行的日志;

                tail -n +10 test.log    查询10行之后的所有日志;

        head:  

            跟tail是相反的,tail是看后多少行日志;例子如下:

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

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

        cat: 

            tac是倒序查看,是cat单词反写;例子如下:

                cat -n test.log |grep "debug"   查询关键字的日志

    2. 应用场景一:按行号查看---过滤出关键字附近的日志

         1)cat -n test.log |grep "debug"  得到关键日志的行号

         2)cat -n test.log |tail -n +92|head -n 20  选择关键字所在的中间一行. 然后查看这个关键字前10行和后10行的日志:

                tail -n +92表示查询92行之后的日志

                head -n 20 则表示在前面的查询结果里再查前20条记录

    3. 应用场景二:根据日期查询日志

          sed -n '/2014-12-17 16:17:20/,/2014-12-17 16:17:36/p'  test.log

          特别说明:上面的两个日期必须是日志中打印出来的日志,否则无效;

                          先 grep '2014-12-17 16:17:20' test.log 来确定日志中是否有该 时间点

    4.应用场景三:日志内容特别多,打印在屏幕上不方便查看

        (1)使用more和less命令,

               如: cat -n test.log |grep "debug" |more     这样就分页打印了,通过点击空格键翻页

        (2)使用 >xxx.txt 将其保存到文件中,到时可以拉下这个文件分析

                如:cat -n test.log |grep "debug"  >debug.txt

    更多相关内容
  • 常用Linux日志查看命令 tail 查看实时变化的日志(比较吃内存) tail -f filename (默认最后10行,相当于增加参数 -n 10) Ctrl+c 是退出tail命令 tail -n 20 filename (显示filename最后20行) tail -n +5 filename (从...
  • linux 查看日志命令

    2022-02-10 09:46:11
    linux 查看日志命令 查看日志前后命令,实时命令
  • linux 查看日志命令总结

    千次阅读 2021-09-04 11:53:51
    head 命令可用于查看文件的开头部分的内容,有一个常用的参数 -n 用于显示行数,默认为 10,即显示 10 行的内容。 命令格式: head [参数] [文件] 参数: -q 隐藏文件名 -v 显示文件名 -c<数目> 显示的...

    目录

    单纯的查看

    head

    tail

    cat

    tac

    综合查看

    more

    less

    grep,awk,sed三剑客

    grep

    sed

    awk

    查找文件命令

    whereis

    find

    locate


    单纯的查看

    head 命令可用于查看文件的开头部分的内容,有一个常用的参数 -n 用于显示行数,默认为 10,即显示 10 行的内容。

    命令格式:

    head [参数] [文件]  

    参数:

    -q 隐藏文件名
    -v 显示文件名
    -c<数目> 显示的字节数。
    -n<行数> 显示的行数。
     

    要显示 runoob_notes.log 文件的开头 10 行,请输入以下命令:
    
    head runoob_notes.log
    
    显示 notes.log 文件的开头 5 行,请输入以下命令:
    
    head -n 5 runoob_notes.log
    
    显示文件前 20 个字节:
    
    head -c 20 runoob_notes.log
    
    查询日志文件除了最后10行的其他所有日志
    
    head -n -10 test.log 

    tail

    tail 命令可用于查看文件的内容,有一个常用的参数 -f 常用于查阅正在改变的日志文件。

    tail -f filename 会把 filename 文件里的最尾部的内容显示在屏幕上,并且不断刷新,只要 filename 更新就可以看到最新的文件内容。

    命令格式:

    tail [参数] [文件]  

    参数:

    -f 循环读取
    -q 不显示处理信息
    -v 显示详细的处理信息
    -c<数目> 显示的字节数
    -n<行数> 显示文件的尾部 n 行内容
    --pid=PID 与-f合用,表示在进程ID,PID死掉之后结束
    -q, --quiet, --silent 从不输出给出文件名的首部
    -s, --sleep-interval=S 与-f合用,表示在每次反复的间隔休眠S秒

    要显示 notes.log 文件的最后 10 行,请输入以下命令:
    
    tail notes.log         # 默认显示最后 10 行
    
    要跟踪名为 notes.log 的文件的增长情况,请输入以下命令:
    
    tail -f notes.log
    
    此命令显示 notes.log 文件的最后 10 行。
    当将某些行添加至 notes.log 文件时,tail 命令会继续显示这些行。 
    显示一直继续,直到您按下(Ctrl-C)组合键停止显示。
    
    显示文件 notes.log 的内容,从第 20 行至文件末尾:
    
    tail -n +20 notes.log
    
    显示文件 notes.log 的最后 10 个字符:
    
    tail -c 10 notes.log
    
    查询10行之后的所有日志;
    
    tail -n +10 test.log    

    cat

    cat(英文全拼:concatenate)命令用于连接文件并打印到标准输出设备上。

    语法格式

    cat [-AbeEnstTuv] [--help] [--version] fileName

    参数说明:
    -n 或 --number:由 1 开始对所有输出的行数编号。

    -b 或 --number-nonblank:和 -n 相似,只不过对于空白行不编号。

    -s 或 --squeeze-blank:当遇到有连续两行以上的空白行,就代换为一行的空白行。

    -v 或 --show-nonprinting:使用 ^ 和 M- 符号,除了 LFD 和 TAB 之外。

    -E 或 --show-ends : 在每行结束处显示 $。

    -T 或 --show-tabs: 将 TAB 字符显示为 ^I。

    -A, --show-all:等价于 -vET。

    -e:等价于"-vE"选项;

    -t:等价于"-vT"选项;

    把 textfile1 的文档内容加上行号后输入 textfile2 这个文档里:
    
    cat -n textfile1 > textfile2
    
    把 textfile1 和 textfile2 的文档内容加上行号(空白行不加)之后将内容附加到 textfile3 文档里:
    
    cat -b textfile1 textfile2 >> textfile3
    
    清空 /etc/test.txt 文档内容:
    
    cat /dev/null > /etc/test.txt
    
    由于会显示整个文件的内容,所以如果文件大的话,慎用!
    
    查询关键字的日志 得到关键日志的行号
    
    cat -n test.log |grep "debug"   
    
    选择关键字所在的中间一行
    
    cat -n test.log |tail -n +92|head -n 20 
    
    然后查看这个关键字前10行和后10行的日志:
    
    表示查询92行之后的日志
    
    tail -n +92
    
    20 则表示在前面的查询结果里再查前20条记录
    
    head -n 20 
    
    分页打印,通过点击空格键翻页
    
    cat -n test.log |grep "debug" |more 
    
    使用 >xxx.txt 将其保存到文件中,到时可以拉下这个文件分析,例如:
    
    cat -n test.log |grep "debug"  >debug.txt

    tac

    关于cat命令,还有一个与之类似但写法相反的命令:tac。写法就是cat反过来写

    功能也是相反的,是从后往前显示内容。示例如下:

    tac demo.log
    
    // 执行结果:
    line0 78
    line9 56
    line8 34
    line7 12
    line6 654321 bb
    line5 654321 aa
    line4 123456 dd
    line3 123456 cc
    line2 123456 bb
    line1 123456 aa

    综合查看

    more

    Linux more命令

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

    语法

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

    参数:

    -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+F 向下滚动一屏

    空格键 向下滚动一屏

    Ctrl+B 返回上一屏

    b 返回上一屏

    = 输出当前行的行号

    :f 输出文件名和当前行的行号

    V 调用vi编辑器

    !命令 调用Shell,并执行命令

    q 退出more

    逐页显示 testfile 文档内容,如有连续两行以上空白行则以一行空白行显示。
    
    more -s testfile
    
    从第 20 行开始显示 testfile 之文档内容。
    
    more +20 testfile

    less

    less 与 more 类似,less 可以随意浏览文件,支持翻页和搜索,支持向上翻页和向下翻页。

    语法

    less [参数] 文件 

    参数说明:

    -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]: 向上翻动一页

    附加备注

    1.全屏导航

    ctrl + F - 向前移动一屏
    ctrl + B - 向后移动一屏
    ctrl + D - 向前移动半屏
    ctrl + U - 向后移动半屏

    2.单行导航

    j - 下一行
    k - 上一行

    3.其它导航

    G - 移动到最后一行
    g - 移动到第一行
    q / ZZ - 退出 less 命令

    4.其它有用的命令

    v - 使用配置的编辑器编辑当前文件
    h - 显示 less 的帮助文档
    &pattern - 仅显示匹配模式的行,而不是整个文件

    5.标记导航

    当使用 less 查看大文件时,可以在任何一个位置作标记,可以通过命令导航到标有特定标记的文本位置:

    ma - 使用 a 标记文本的当前位置
    'a - 导航到标记 a 处

    实例

    1、查看文件
    
    less log2013.log
    
    2、ps查看进程信息并通过less分页显示
    
    ps -ef |less
    
    3、查看命令历史使用记录并通过less分页显示
    
    [root@localhost test]# history | less
    22  scp -r tomcat6.0.32 root@192.168.120.203:/opt/soft
    23  cd ..
    24  scp -r web root@192.168.120.203:/opt/
    25  cd soft
    26  ls
    ……省略……
    
    4、浏览多个文件
    
    less log2013.log log2014.log
    说明:
    输入 :n后,切换到 log2014.log
    输入 :p 后,切换到log2013.log

    grep,awk,sed三剑客

    grep

    Linux grep 命令用于查找文件里符合条件的字符串。

    grep 指令用于查找内容包含指定的范本样式的文件,如果发现某文件的内容符合所指定的范本样式,预设 grep 指令会把含有范本样式的那一列显示出来。若不指定任何文件名称,或是所给予的文件名为 -,则 grep 指令会从标准输入设备读取数据。

    语法

    grep [-abcEFGhHilLnqrsvVwxy][-A<显示行数>][-B<显示列数>][-C<显示列数>][-d<进行动作>][-e<范本样式>][-f<范本文件>][--help][范本样式][文件或目录...]

    参数:

    -a 或 --text : 不要忽略二进制的数据。
    -A<显示行数> 或 --after-context=<显示行数> : 除了显示符合范本样式的那一列之外,并显示该行之后的内容。
    -b 或 --byte-offset : 在显示符合样式的那一行之前,标示出该行第一个字符的编号。
    -B<显示行数> 或 --before-context=<显示行数> : 除了显示符合样式的那一行之外,并显示该行之前的内容。
    -c 或 --count : 计算符合样式的列数。
    -C<显示行数> 或 --context=<显示行数>或-<显示行数> : 除了显示符合样式的那一行之外,并显示该行之前后的内容。
    -d <动作> 或 --directories=<动作> : 当指定要查找的是目录而非文件时,必须使用这项参数,否则grep指令将回报信息并停止动作。
    -e<范本样式> 或 --regexp=<范本样式> : 指定字符串做为查找文件内容的样式。
    -E 或 --extended-regexp : 将样式为延伸的正则表达式来使用。
    -f<规则文件> 或 --file=<规则文件> : 指定规则文件,其内容含有一个或多个规则样式,让grep查找符合规则条件的文件内容,格式为每行一个规则样式。
    -F 或 --fixed-regexp : 将样式视为固定字符串的列表。
    -G 或 --basic-regexp : 将样式视为普通的表示法来使用。
    -h 或 --no-filename : 在显示符合样式的那一行之前,不标示该行所属的文件名称。
    -H 或 --with-filename : 在显示符合样式的那一行之前,表示该行所属的文件名称。
    -i 或 --ignore-case : 忽略字符大小写的差别。
    -l 或 --file-with-matches : 列出文件内容符合指定的样式的文件名称。
    -L 或 --files-without-match : 列出文件内容不符合指定的样式的文件名称。
    -n 或 --line-number : 在显示符合样式的那一行之前,标示出该行的列数编号。
    -o 或 --only-matching : 只显示匹配PATTERN 部分。
    -q 或 --quiet或--silent : 不显示任何信息。
    -r 或 --recursive : 此参数的效果和指定"-d recurse"参数相同。
    -s 或 --no-messages : 不显示错误信息。
    -v 或 --invert-match : 显示不包含匹配文本的所有行。
    -V 或 --version : 显示版本信息。
    -w 或 --word-regexp : 只显示全字符合的列。
    -x --line-regexp : 只显示全列符合的列。
    -y : 此参数的效果和指定"-i"参数相同。
     

    1、在当前目录中,查找后缀有 file 字样的文件中包含 test 字符串的文件,并打印出该字符串的行。
    此时,可以使用如下命令:
    
    grep test *file 
    结果如下所示:
    
    $ 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字符的行 
    
    2、以递归的方式查找符合条件的文件。
    例如,查找指定目录/etc/acpi 及其子目录(如果存在子目录的话)下所有文件中
    包含字符串"update"的文件,并打印出该字符串所在行的内容,使用的命令为:
    
    grep -r update /etc/acpi 
    输出结果如下:
    
    $ grep -r update /etc/acpi #以递归的方式查找“etc/acpi”  
    #下包含“update”的文件  
    /etc/acpi/ac.d/85-anacron.sh:# (Things like the slocate updatedb cause a lot of IO.)  
    Rather than  
    /etc/acpi/resume.d/85-anacron.sh:# (Things like the slocate updatedb cause a lot of  
    IO.) Rather than  
    /etc/acpi/events/thinkpad-cmos:action=/usr/sbin/thinkpad-keys--update 
    
    3、反向查找。前面各个例子是查找并打印出符合条件的行,通过"-v"参数可以打印出不符合条件行的内容。
    
    查找文件名中包含 test 的文件中不包含test 的行,此时,使用的命令为:
    
    grep -v test *test*
    结果如下所示:
    
    $ grep-v test* #查找文件名中包含test 的文件中不包含test 的行  
    testfile1:helLinux!  
    testfile1:Linis a free Unix-type operating system.  
    testfile1:Lin  
    testfile_1:HELLO LINUX!  
    testfile_1:LINUX IS A FREE UNIX-TYPE OPTERATING SYSTEM.  
    testfile_1:THIS IS A LINUX TESTFILE!  
    testfile_2:HELLO LINUX!  
    testfile_2:Linux is a free unix-type opterating system.  
    
    // 查询包含关键字<code>123456</code>的日志内容
    grep "123456" demo.log
    
    // 执行结果
    line1 123456 aa
    line2 123456 bb
    line3 123456 cc
    line4 123456 dd
    
    // 查询包含关键字<code>123456</code>且包含<code>aa</code>的日志内容
    grep "123456" demo.log | grep "aa"
    
    // 执行结果
    line1 123456 aa
    
    // 查询不包含<code>aa</code>的日志内容
    grep -v "aa" demo.log
    
    // 执行结果
    line2 123456 bb
    line3 123456 cc
    line4 123456 dd
    line6 654321 bb
    line7 12
    line8 34
    line9 56
    line0 78
    
    // 查询包含关键字<code>123456</code>但不包含<code>aa</code>的日志内容
    grep "123456" demo.log | grep -v "aa"
    
    // 执行结果
    line2 123456 bb
    line3 123456 cc
    line4 123456 dd
    
    // 查询包含关键字<code>123456</code>或<code>aa</code>的日志内容
    grep "123456\|aa" demo.log
    或者
    grep -E "123456|aa" demo.log
    
    // 执行结果
    line1 123456 aa
    line2 123456 bb
    line3 123456 cc
    line4 123456 dd
    line5 654321 aa
    当你通过grep查找关键字,但是还是有非常多匹配的结果时,可以组合前面的less或more实现分页显示,示例如下:
    
    grep "123456" demo.log | less
    grep "123456" demo.log | more
    
    grep "123456\|aa" demo.log | less
    grep "123456" demo.log | grep -v "aa" | less

    sed

    Linux sed 命令是利用脚本来处理文本文件。

    sed 可依照脚本的指令来处理、编辑文本文件。

    Sed 主要用来自动编辑一个或多个文件、简化对文件的反复操作、编写转换程序等。

    语法

    sed [-hnV][-e<script>][-f<script文件>][文本文件]

    参数说明:

    -e<script>或--expression=<script> 以选项中指定的script来处理输入的文本文件。
    -f<script文件>或--file=<script文件> 以选项中指定的script文件来处理输入的文本文件。
    -h或--help 显示帮助。
    -n或--quiet或--silent 仅显示script处理后的结果。
    -V或--version 显示版本信息。
    动作说明:a :新增, a 的后面可以接字串,而这些字串会在新的一行出现(目前的下一行)~
    c :取代, c 的后面可以接字串,这些字串可以取代 n1,n2 之间的行!
    d :删除,因为是删除啊,所以 d 后面通常不接任何咚咚;
    i :插入, i 的后面可以接字串,而这些字串会在新的一行出现(目前的上一行);
    p :打印,亦即将某个选择的数据印出。通常 p 会与参数 sed -n 一起运行~
    s :取代,可以直接进行取代的工作哩!通常这个 s 的动作可以搭配正规表示法!例如 1,20s/old/new/g 就是啦!

    在testfile文件的第四行后添加一行,并将结果输出到标准输出,在命令行提示符下输入如下命令:
    
    sed -e 4a\newLine testfile 
    
    首先查看testfile中的内容如下:
    
    $ cat testfile #查看testfile 中的内容  
    HELLO LINUX!  
    Linux is a free unix-type opterating system.  
    This is a linux testfile!  
    Linux test 
    
    使用sed命令后,输出结果如下:
    
    $ sed -e 4a\newline testfile #使用sed 在第四行后添加新字符串  
    HELLO LINUX! #testfile文件原有的内容  
    Linux is a free unix-type opterating system.  
    This is a linux testfile!  
    Linux test  
    newline 
    
    以行为单位的新增/删除
    将 /etc/passwd 的内容列出并且列印行号,同时,请将第 2~5 行删除!
    
    [root@www ~]# nl /etc/passwd | sed '2,5d'
    1 root:x:0:0:root:/root:/bin/bash
    6 sync:x:5:0:sync:/sbin:/bin/sync
    7 shutdown:x:6:0:shutdown:/sbin:/sbin/shutdown
    .....(后面省略).....
    
    sed 的动作为 '2,5d' ,那个 d 就是删除!因为 2-5 行给他删除了,所以显示的数据就没有 2-5 行罗~ 另外,注意一下,原本应该是要下达 sed -e 才对,没有 -e 也行啦!同时也要注意的是, sed 后面接的动作,请务必以 '' 两个单引号括住喔!
    
    只要删除第 2 行
    
    nl /etc/passwd | sed '2d' 
    
    要删除第 3 到最后一行
    
    nl /etc/passwd | sed '3,$d' 
    
    在第二行后(亦即是加在第三行)加上『drink tea?』字样!
    
    [root@www ~]# nl /etc/passwd | sed '2a drink tea'
    1 root:x:0:0:root:/root:/bin/bash
    2 bin:x:1:1:bin:/bin:/sbin/nologin
    drink tea
    3 daemon:x:2:2:daemon:/sbin:/sbin/nologin
    .....(后面省略).....
    
    那如果是要在第二行前
    
    nl /etc/passwd | sed '2i drink tea' 
    
    如果是要增加两行以上,在第二行后面加入两行字,例如 Drink tea or ..... 与 drink beer?
    
    [root@www ~]# nl /etc/passwd | sed '2a Drink tea or ......\
    > drink beer ?'
    1 root:x:0:0:root:/root:/bin/bash
    2 bin:x:1:1:bin:/bin:/sbin/nologin
    Drink tea or ......
    drink beer ?
    3 daemon:x:2:2:daemon:/sbin:/sbin/nologin
    .....(后面省略).....
    
    每一行之间都必须要以反斜杠『 \ 』来进行新行的添加喔!
    所以,上面的例子中,我们可以发现在第一行的最后面就有 \ 存在。
    
    以行为单位的替换与显示
    将第2-5行的内容取代成为『No 2-5 number』呢?
    
    [root@www ~]# nl /etc/passwd | sed '2,5c No 2-5 number'
    1 root:x:0:0:root:/root:/bin/bash
    No 2-5 number
    6 sync:x:5:0:sync:/sbin:/bin/sync
    .....(后面省略).....
    
    透过这个方法我们就能够将数据整行取代了!
    
    仅列出 /etc/passwd 文件内的第 5-7 行
    
    [root@www ~]# nl /etc/passwd | sed -n '5,7p'
    5 lp:x:4:7:lp:/var/spool/lpd:/sbin/nologin
    6 sync:x:5:0:sync:/sbin:/bin/sync
    7 shutdown:x:6:0:shutdown:/sbin:/sbin/shutdown
    
    可以透过这个 sed 的以行为单位的显示功能, 就能够将某一个文件内的某些行号选择出来显示。
    
    数据的搜寻并显示
    
    搜索 /etc/passwd有root关键字的行
    
    nl /etc/passwd | sed '/root/p'
    1  root:x:0:0:root:/root:/bin/bash
    1  root:x:0:0:root:/root:/bin/bash
    2  daemon:x:1:1:daemon:/usr/sbin:/bin/sh
    3  bin:x:2:2:bin:/bin:/bin/sh
    4  sys:x:3:3:sys:/dev:/bin/sh
    5  sync:x:4:65534:sync:/bin:/bin/sync
    ....下面忽略 
    
    如果root找到,除了输出所有行,还会输出匹配行。
    
    使用-n的时候将只打印包含模板的行。
    
    nl /etc/passwd | sed -n '/root/p'
    1  root:x:0:0:root:/root:/bin/bash
    
    数据的搜寻并删除
    删除/etc/passwd所有包含root的行,其他行输出
    
    nl /etc/passwd | sed  '/root/d'
    2  daemon:x:1:1:daemon:/usr/sbin:/bin/sh
    3  bin:x:2:2:bin:/bin:/bin/sh
    ....下面忽略
    
    #第一行的匹配root已经删除了
    
    数据的搜寻并执行命令
    
    搜索/etc/passwd,找到root对应的行,执行后面花括号中的一组命令,每个命令之间用分号分隔,
    这里把bash替换为blueshell,再输出这行:
    
    nl /etc/passwd | sed -n '/root/{s/bash/blueshell/;p;q}'    
    1  root:x:0:0:root:/root:/bin/blueshell
    
    最后的q是退出。
    
    数据的搜寻并替换
    
    除了整行的处理模式之外, sed 还可以用行为单位进行部分数据的搜寻并取代。基本上 sed 的搜寻与替代的与 vi 相当的类似!他有点像这样:
    
    sed 's/要被取代的字串/新的字串/g'
    
    先观察原始信息,利用 /sbin/ifconfig 查询 IP
    
    [root@www ~]# /sbin/ifconfig eth0
    eth0 Link encap:Ethernet HWaddr 00:90:CC:A6:34:84
    inet addr:192.168.1.100 Bcast:192.168.1.255 Mask:255.255.255.0
    inet6 addr: fe80::290:ccff:fea6:3484/64 Scope:Link
    UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1
    .....(以下省略).....
    
    本机的ip是192.168.1.100。
    
    将 IP 前面的部分予以删除
    
    [root@www ~]# /sbin/ifconfig eth0 | grep 'inet addr' | sed 's/^.*addr://g'
    192.168.1.100 Bcast:192.168.1.255 Mask:255.255.255.0
    
    接下来则是删除后续的部分,亦即: 
    192.168.1.100 Bcast:192.168.1.255 Mask:255.255.255.0
    
    将 IP 后面的部分予以删除
    
    [root@www ~]# /sbin/ifconfig eth0 | grep 'inet addr' | sed 's/^.*addr://g' | sed 's/Bcast.*$//g'
    192.168.1.100
    
    多点编辑
    
    一条sed命令,删除/etc/passwd第三行到末尾的数据,并把bash替换为blueshell
    
    nl /etc/passwd | sed -e '3,$d' -e 's/bash/blueshell/'
    1  root:x:0:0:root:/root:/bin/blueshell
    2  daemon:x:1:1:daemon:/usr/sbin:/bin/sh
    
    -e表示多点编辑,第一个编辑命令删除/etc/passwd第三行到末尾的数据,第二条命令搜索bash替换为blueshell。
    
    直接修改文件内容(危险动作)
    
    sed 可以直接修改文件的内容,不必使用管道命令或数据流重导向! 
    不过,由於这个动作会直接修改到原始的文件,所以请你千万不要随便拿系统配置来测试! 
    我们还是使用文件 regular_express.txt 文件来测试看看吧!
    
    regular_express.txt 文件内容如下:
    
    [root@www ~]# cat regular_express.txt 
    runoob.
    google.
    taobao.
    facebook.
    zhihu-
    weibo-
    
    利用 sed 将 regular_express.txt 内每一行结尾若为 . 则换成 !
    
    [root@www ~]# sed -i 's/\.$/\!/g' regular_express.txt
    [root@www ~]# cat regular_express.txt 
    runoob!
    google!
    taobao!
    facebook!
    zhihu-
    weibo-:q:q
    
    利用 sed 直接在 regular_express.txt 最后一行加入 # This is a test:
    
    [root@www ~]# sed -i '$a # This is a test' regular_express.txt
    [root@www ~]# cat regular_express.txt 
    runoob!
    google!
    taobao!
    facebook!
    zhihu-
    weibo-
    # This is a test
    
    由於 $ 代表的是最后一行,而 a 的动作是新增,因此该文件最后新增 # This is a test!
    
    sed 的 -i 选项可以直接修改文件内容,这功能非常有帮助!举例来说,如果你有一个 100 万行的文件,你要在第 100 行加某些文字,此时使用 vim 可能会疯掉!因为文件太大了!那怎办?就利用 sed 啊!透过 sed 直接修改/取代的功能,你甚至不需要使用 vim 去修订!

    awk

    AWK 是一种处理文本文件的语言,是一个强大的文本分析工具。

    之所以叫 AWK 是因为其取了三位创始人 Alfred Aho,Peter Weinberger, 和 Brian Kernighan 的 Family Name 的首字符。

    语法

    awk [选项参数] 'script' var=value file(s)

    awk [选项参数] -f scriptfile var=value file(s)
    选项参数说明:-F fs or --field-separator fs
    指定输入文件折分隔符,fs是一个字符串或者是一个正则表达式,如-F:。
    -v var=value or --asign var=value
    赋值一个用户定义变量。
    -f scripfile or --file scriptfile
    从脚本文件中读取awk命令。
    -mf nnn and -mr nnn
    对nnn值设置内在限制,-mf选项限制分配给nnn的最大块数目;-mr选项限制记录的最大数目。这两个功能是Bell实验室版awk的扩展功能,在标准awk中不适用。
    -W compact or --compat, -W traditional or --traditional
    在兼容模式下运行awk。所以gawk的行为和标准的awk完全一样,所有的awk扩展都被忽略。
    -W copyleft or --copyleft, -W copyright or --copyright
    打印简短的版权信息。
    -W help or --help, -W usage or --usage
    打印全部awk选项和每个选项的简短说明。
    -W lint or --lint
    打印不能向传统unix平台移植的结构的警告。
    -W lint-old or --lint-old
    打印关于不能向传统unix平台移植的结构的警告。
    -W posix
    打开兼容模式。但有以下限制,不识别:/x、函数关键字、func、换码序列以及当fs是一个空格时,将新行作为一个域分隔符;操作符**和**=不能代替^和^=;fflush无效。
    -W re-interval or --re-inerval
    允许间隔正则表达式的使用,参考(grep中的Posix字符类),如括号表达式[[:alpha:]]。
    -W source program-text or --source program-text
    使用program-text作为源代码,可与-f命令混用。
    -W version or --version
    打印bug报告信息的版本。

    基本用法
    log.txt文本内容如下:
    
    2 this is a test
    3 Are you like awk
    This's a test
    10 There are orange,apple,mongo
    
    用法一:
    
    awk '{[pattern] action}' {filenames}   # 行匹配语句 awk '' 只能用单引号
    
    实例:
    
    # 每行按空格或TAB分割,输出文本中的1、4项
    
     $ awk '{print $1,$4}' log.txt
     ---------------------------------------------
     2 a
     3 like
     This's
     10 orange,apple,mongo
     # 格式化输出
     $ awk '{printf "%-8s %-10s\n",$1,$4}' log.txt
     ---------------------------------------------
     2        a
     3        like
     This's
     10       orange,apple,mongo
     
    用法二:
    
    awk -F  #-F相当于内置变量FS, 指定分割字符
    
    实例:
    
    # 使用","分割
     $  awk -F, '{print $1,$2}'   log.txt
     ---------------------------------------------
     2 this is a test
     3 Are you like awk
     This's a test
     10 There are orange apple
     # 或者使用内建变量
     $ awk 'BEGIN{FS=","} {print $1,$2}'     log.txt
     ---------------------------------------------
     2 this is a test
     3 Are you like awk
     This's a test
     10 There are orange apple
     # 使用多个分隔符.先使用空格分割,然后对分割结果再使用","分割
     $ awk -F '[ ,]'  '{print $1,$2,$5}'   log.txt
     ---------------------------------------------
     2 this test
     3 Are awk
     This's a
     10 There apple
    
    用法三:
    
    awk -v  # 设置变量
    
    实例:
    
     $ awk -va=1 '{print $1,$1+a}' log.txt
     ---------------------------------------------
     2 3
     3 4
     This's 1
     10 11
     $ awk -va=1 -vb=s '{print $1,$1+a,$1b}' log.txt
     ---------------------------------------------
     2 3 2s
     3 4 3s
     This's 1 This'ss
     10 11 10s
    
    用法四:
    
    awk -f {awk脚本} {文件名}
    
    实例:
    
     $ awk -f cal.awk log.txt
    
    运算符
    运算符    描述
    = += -= *= /= %= ^= **=    赋值
    ?:    C条件表达式
    ||    逻辑或
    &&    逻辑与
    ~ 和 !~    匹配正则表达式和不匹配正则表达式
    < <= > >= != ==    关系运算符
    空格    连接
    + -    加,减
    * / %    乘,除与求余
    + - !    一元加,减和逻辑非
    ^ ***    求幂
    ++ --    增加或减少,作为前缀或后缀
    $    字段引用
    in    数组成员
    
    过滤第一列大于2的行
    
    $ awk '$1>2' log.txt    #命令
    
    #输出
    3 Are you like awk
    This's a test
    10 There are orange,apple,mongo
    
    过滤第一列等于2的行
    
    $ awk '$1==2 {print $1,$3}' log.txt    #命令
    
    #输出
    2 is
    
    过滤第一列大于2并且第二列等于'Are'的行
    
    $ awk '$1>2 && $2=="Are" {print $1,$2,$3}' log.txt    #命令
    
    #输出
    3 Are you
    
    内建变量
    变量    描述
    $n    当前记录的第n个字段,字段间由FS分隔
    $0    完整的输入记录
    ARGC    命令行参数的数目
    ARGIND    命令行中当前文件的位置(从0开始算)
    ARGV    包含命令行参数的数组
    CONVFMT    数字转换格式(默认值为%.6g)ENVIRON环境变量关联数组
    ERRNO    最后一个系统错误的描述
    FIELDWIDTHS    字段宽度列表(用空格键分隔)
    FILENAME    当前文件名
    FNR    各文件分别计数的行号
    FS    字段分隔符(默认是任何空格)
    IGNORECASE    如果为真,则进行忽略大小写的匹配
    NF    一条记录的字段的数目
    NR    已经读出的记录数,就是行号,从1开始
    OFMT    数字的输出格式(默认值是%.6g)
    OFS    输出字段分隔符,默认值与输入字段分隔符一致。
    ORS    输出记录分隔符(默认值是一个换行符)
    RLENGTH    由match函数所匹配的字符串的长度
    RS    记录分隔符(默认是一个换行符)
    RSTART    由match函数所匹配的字符串的第一个位置
    SUBSEP    数组下标分隔符(默认值是/034)
    
    $ awk 'BEGIN{printf "%4s %4s %4s %4s %4s %4s %4s %4s %4s\n","FILENAME","ARGC","FNR","FS","NF","NR","OFS","ORS","RS";printf "---------------------------------------------\n"} {printf "%4s %4s %4s %4s %4s %4s %4s %4s %4s\n",FILENAME,ARGC,FNR,FS,NF,NR,OFS,ORS,RS}'  log.txt
    FILENAME ARGC  FNR   FS   NF   NR  OFS  ORS   RS
    ---------------------------------------------
    log.txt    2    1         5    1
    log.txt    2    2         5    2
    log.txt    2    3         3    3
    log.txt    2    4         4    4
    $ awk -F\' 'BEGIN{printf "%4s %4s %4s %4s %4s %4s %4s %4s %4s\n","FILENAME","ARGC","FNR","FS","NF","NR","OFS","ORS","RS";printf "---------------------------------------------\n"} {printf "%4s %4s %4s %4s %4s %4s %4s %4s %4s\n",FILENAME,ARGC,FNR,FS,NF,NR,OFS,ORS,RS}'  log.txt
    FILENAME ARGC  FNR   FS   NF   NR  OFS  ORS   RS
    ---------------------------------------------
    log.txt    2    1    '    1    1
    log.txt    2    2    '    1    2
    log.txt    2    3    '    2    3
    log.txt    2    4    '    1    4
    
    # 输出顺序号 NR, 匹配文本行号
    
    $ awk '{print NR,FNR,$1,$2,$3}' log.txt
    ---------------------------------------------
    1 1 2 this is
    2 2 3 Are you
    3 3 This's a test
    4 4 10 There are
    
    # 指定输出分割符
    
    $  awk '{print $1,$2,$5}' OFS=" $ "  log.txt
    ---------------------------------------------
    2 $ this $ test
    3 $ Are $ awk
    This's $ a $
    10 $ There $
    
    使用正则,字符串匹配
    
    # 输出第二列包含 "th",并打印第二列与第四列
    
    $ awk '$2 ~ /th/ {print $2,$4}' log.txt
    ---------------------------------------------
    this a
    
    ~ 表示模式开始。// 中是模式。
    
    # 输出包含 "re" 的行
    
    $ awk '/re/ ' log.txt
    ---------------------------------------------
    3 Are you like awk
    10 There are orange,apple,mongo
    
    忽略大小写
    
    $ awk 'BEGIN{IGNORECASE=1} /this/' log.txt
    ---------------------------------------------
    2 this is a test
    This's a test
    
    模式取反
    
    $ awk '$2 !~ /th/ {print $2,$4}' log.txt
    ---------------------------------------------
    Are like
    a
    There orange,apple,mongo
    $ awk '!/th/ {print $2,$4}' log.txt
    ---------------------------------------------
    Are like
    a
    There orange,apple,mongo
    
    awk脚本
    
    关于 awk 脚本,我们需要注意两个关键词 BEGIN 和 END。
    
    BEGIN{ 这里面放的是执行前的语句 }
    END {这里面放的是处理完所有的行后要执行的语句 }
    {这里面放的是处理每一行时要执行的语句}
    假设有这么一个文件(学生成绩表):
    
    $ cat score.txt
    Marry   2143 78 84 77
    Jack    2321 66 78 45
    Tom     2122 48 77 71
    Mike    2537 87 97 95
    Bob     2415 40 57 62
    
    我们的 awk 脚本如下:
    
    $ cat cal.awk
    #!/bin/awk -f
    
    #运行前
    
    BEGIN {
        math = 0
        english = 0
        computer = 0
     
        printf "NAME    NO.   MATH  ENGLISH  COMPUTER   TOTAL\n"
        printf "---------------------------------------------\n"
    }
    
    #运行中
    
    {
        math+=$3
        english+=$4
        computer+=$5
        printf "%-6s %-6s %4d %8d %8d %8d\n", $1, $2, $3,$4,$5, $3+$4+$5
    }
    
    #运行后
    
    END {
        printf "---------------------------------------------\n"
        printf "  TOTAL:%10d %8d %8d \n", math, english, computer
        printf "AVERAGE:%10.2f %8.2f %8.2f\n", math/NR, english/NR, computer/NR
    }
    
    我们来看一下执行结果:
    
    $ awk -f cal.awk score.txt
    NAME    NO.   MATH  ENGLISH  COMPUTER   TOTAL
    ---------------------------------------------
    Marry  2143     78       84       77      239
    Jack   2321     66       78       45      189
    Tom    2122     48       77       71      196
    Mike   2537     87       97       95      279
    Bob    2415     40       57       62      159
    ---------------------------------------------
      TOTAL:       319      393      350
    AVERAGE:     63.80    78.60    70.00
    
    另外一些实例
    
    AWK 的 hello world 程序为:
    
    BEGIN { print "Hello, world!" }
    
    计算文件大小
    
    $ ls -l *.txt | awk '{sum+=$5} END {print sum}'
    --------------------------------------------------
    666581
    
    从文件中找出长度大于 80 的行:
    
    awk 'length>80' log.txt
    
    打印九九乘法表
    
    seq 9 | sed 'H;g' | awk -v RS='' '{for(i=1;i<=NF;i++)printf("%dx%d=%d%s", i, NR, i*NR, i==NR?"\n":"\t")}'

    查找文件命令

    whereis

    Linux whereis命令用于查找文件。

    该指令会在特定目录中查找符合条件的文件。这些文件应属于原始代码、二进制文件,或是帮助文件。

    该指令只能用于查找二进制文件、源代码文件和man手册页,一般文件的定位需使用locate命令。

    如果确定需要查找的是程序,但用whereis又找不到的话,那就表示系统没有安装该程序,如whereis goic。即whereis只能用于命令/程序名的搜索,而不能搜索普通文件。

    语法

    whereis [-bfmsu][-B <目录>...][-M <目录>...][-S <目录>...][文件...]

    参数:

    -b  只查找二进制文件。
    -B<目录>  只在设置的目录下查找二进制文件。
    -f  不显示文件名前的路径名称。
    -m  只查找说明文件。
    -M<目录>  只在设置的目录下查找说明文件。
    -s  只查找原始代码文件。
    -S<目录>  只在设置的目录下查找原始代码文件。
    -u  查找不包含指定类型的文件。
    实例

    使用指令"whereis"查看指令"bash"的位置,输入如下命令:
    
    $ whereis bash 
    
    上面的指令执行后,输出信息如下所示:
    
    
    bash:/bin/bash/etc/bash.bashrc/usr/share/man/man1/bash.1.gz 
    注意:以上输出信息从左至右分别为查询的程序名、bash路径、bash的man 手册页路径。
    
    如果用户需要单独查询二进制文件或帮助文件,可使用如下命令:
    
    $ whereis -b bash 
    $ whereis -m bash 
    
    输出信息如下:
    
    $ whereis -b bash               #显示bash 命令的二进制程序  
    bash: /bin/bash /etc/bash.bashrc /usr/share/bash    # bash命令的二进制程序的地址  
    
    $ whereis -m bash               #显示bash 命令的帮助文件  
    bash: /usr/share/man/man1/bash.1.gz  #bash命令的帮助文件地址  

    find

    Linux find 命令用来在指定目录下查找文件。任何位于参数之前的字符串都将被视为欲查找的目录名。如果使用该命令时,不设置任何参数,则 find 命令将在当前目录下查找子目录与文件。并且将查找到的子目录和文件全部进行显示。

    语法

    find   path   -option   [   -print ]   [ -exec   -ok   command ]   {} \;

     find <指定目录> <指定条件> <指定动作>
        - <指定目录>: 所要搜索的目录及其所有子目录。默认为当前目录。
        - <指定条件>: 所要搜索的文件的特征。
        - <指定动作>: 对搜索结果进行特定的处理。
    如果什么参数也不加,find默认搜索当前目录及其子目录,并且不过滤任何结果(也就是返回所有文件),将它们全都显示在屏幕上。

    参数说明 :

    find 根据下列规则判断 path 和 expression,在命令列上第一个 - ( ) , ! 之前的部份为 path,之后的是 expression。如果 path 是空字串则使用目前路径,如果 expression 是空字串则使用 -print 为预设 expression。

    expression 中可使用的选项有二三十个之多,在此只介绍最常用的部份。

    -mount, -xdev : 只检查和指定目录在同一个文件系统下的文件,避免列出其它文件系统中的文件

    -amin n : 在过去 n 分钟内被读取过

    -anewer file : 比文件 file 更晚被读取过的文件

    -atime n : 在过去n天内被读取过的文件

    -cmin n : 在过去 n 分钟内被修改过

    -cnewer file :比文件 file 更新的文件

    -ctime n : 在过去n天内被修改过的文件

    -empty : 空的文件-gid n or -group name : gid 是 n 或是 group 名称是 name

    -ipath p, -path p : 路径名称符合 p 的文件,ipath 会忽略大小写

    -name name, -iname name : 文件名称符合 name 的文件。iname 会忽略大小写

    -size n : 文件大小 是 n 单位,b 代表 512 位元组的区块,c 表示字元数,k 表示 kilo bytes,w 是二个位元组。

    -type c : 文件类型是 c 的文件。

    d: 目录

    c: 字型装置文件

    b: 区块装置文件

    p: 具名贮列

    f: 一般文件

    l: 符号连结

    s: socket

    -pid n : process id 是 n 的文件

    你可以使用 ( ) 将运算式分隔,并使用下列运算。

    exp1 -and exp2

    ! expr

    -not expr

    exp1 -or exp2

    exp1, exp2

    将当前目录及其子目录下所有文件后缀为 .c 的文件列出来:
    
    # find . -name "*.c"
    
    将当前目录及其子目录中的所有文件列出:
    
    # find . -type f
    
    将当前目录及其子目录下所有最近 20 天内更新过的文件列出:
    
    # find . -ctime -20
    
    查找 /var/log 目录中更改时间在 7 日以前的普通文件,并在删除之前询问它们:
    
    # find /var/log -type f -mtime +7 -ok rm {} \;
    
    查找当前目录中文件属主具有读、写权限,并且文件所属组的用户和其他用户具有读权限的文件:
    
    # find . -type f -perm 644 -exec ls -l {} \;
    
    查找系统中所有文件长度为 0 的普通文件,并列出它们的完整路径:
    
    # find / -type f -size 0 -exec ls -l {} \;

    locate

    Linux locate命令用于查找符合条件的文档,他会去保存文档和目录名称的数据库内,查找合乎范本样式条件的文档或目录。

    一般情况我们只需要输入 locate your_file_name 即可查找指定文件。

    locate 的速度比 find 快,它并不是真的查找,而是查数据库,一般文件数据库在 /var/lib/slocate/slocate.db 中,所以 locate 的查找并不是实时的,而是以数据库的更新为准,一般是系统自己维护,也可以手工升级数据库 ,命令为:

    updatedb
    默认情况下 updatedb 每天执行一次。

    语法

    locate [-d ][--help][--version][范本样式...]

    参数:

    -b, --basename -- 仅匹配路径名的基本名称
    -c, --count -- 只输出找到的数量
    -d, --database DBPATH -- 使用 DBPATH 指定的数据库,而不是默认数据库 /var/lib/mlocate/mlocate.db
    -e, --existing -- 仅打印当前现有文件的条目
    -1 -- 如果 是 1.则启动安全模式。在安全模式下,使用者不会看到权限无法看到 的档案。这会始速度减慢,因为 locate 必须至实际的档案系统中取得档案的 权限资料。
    -0, --null -- 在输出上带有NUL的单独条目
    -S, --statistics -- 不搜索条目,打印有关每个数据库的统计信息
    -q -- 安静模式,不会显示任何错误讯息。
    -P, --nofollow, -H -- 检查文件存在时不要遵循尾随的符号链接
    -l, --limit, -n LIMIT -- 将输出(或计数)限制为LIMIT个条目
    -n -- 至多显示 n个输出。
    -m, --mmap -- 被忽略,为了向后兼容
    -r, --regexp REGEXP -- 使用基本正则表达式
    --regex -- 使用扩展正则表达式
    -q, --quiet -- 安静模式,不会显示任何错误讯息
    -s, --stdio -- 被忽略,为了向后兼容
    -o -- 指定资料库存的名称。
    -h, --help -- 显示帮助
    -i, --ignore-case -- 忽略大小写
    -V, --version -- 显示版本信息

    查找 passwd 文件,输入以下命令:
    
    locate passwd
    
    搜索 etc 目录下所有以 sh 开头的文件 :
    
    locate /etc/sh
    
    忽略大小写搜索当前用户目录下所有以 r 开头的文件 :
    
    locate -i ~/r
    
    附加说明
    
    locate 与 find 不同: find 是去硬盘找,locate 只在 /var/lib/slocate 资料库中找。
    展开全文
  • Linux查看日志命令

    万次阅读 2019-10-15 21:52:50
    Linux查看日志命令 本篇借鉴自踏凌霄原文https://blog.csdn.net/qq_31617637/article/details/71426904 Log位置: /var/log/message 系统启动后的信息和错误日志,是Red Hat Linux中最常用的日志之一 /var/log/...

    Linux查看日志命令

    本篇借鉴自踏凌霄原文https://blog.csdn.net/qq_31617637/article/details/71426904

    Log位置:

    /var/log/message    系统启动后的信息和错误日志,是Red Hat Linux中最常用的日志之一   
    /var/log/secure 与安全相关的日志信息   
    /var/log/maillog    与邮件相关的日志信息   
    /var/log/cron   与定时任务相关的日志信息   
    /var/log/spooler    与UUCP和news设备相关的日志信息   
    /var/log/boot.log   守护进程启动和停止相关的日志消息 

    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/以下。

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

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

    3、tail -r -n 10 filename  
    说明:逆序显示filename最后10行。
    head

    head 仅仅显示前面几行

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

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

    grep [options]  


    主要参数:  
    [options]主要参数:  
    -c:只输出匹配行的计数。  
    -I:不区分大 小写(只适用于单字符)。  
    -h:查询多文件时不显示文件名。  
    -l:查询多文件时只输出包含匹配字符的文件名。  
    -n:显示匹配行及 行号。  
    -s:不显示不存在或无匹配文本的错误信息。  
    -v:显示不包含匹配文本的所有行。  
    pattern正则表达式主要参数:  
    : 忽略正则表达式中特殊字符的原有含义。  
    ^:匹配正则表达式的开始行。  
    $: 匹配正则表达式的结束行。  
    <:从匹配正则表达 式的行开始。  
    >:到匹配正则表达式的行结束。  
    [ ]:单个字符,如[A]即A符合要求 。  
    [ - ]:范围,如[A-Z],即A、B、C一直到Z都符合要求 。  
    。:所有的单个字符。  
     - :有字符,长度可以为0。

    sed命令

    sed -n '5,10p' filename 这样你就可以只查看文件的第5行到第10行。

    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  
    例:  
    把 textfile1 的档案内容加上行号后输入 textfile2 这个档案里  
    cat -n textfile1 > textfile2  

    把 textfile1 和 textfile2 的档案内容加上行号(空白行不加)之后将内容附加到 textfile3 里。  
    cat -b textfile1 textfile2 >> textfile3  

    把test.txt文件扔进垃圾箱,赋空值test.txt  
    cat /dev/null > /etc/test.txt   
    注意:>意思是创建,>>是追加。千万不要弄混了。  

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

    tail web.2016-06-06.log -n 300 -f  
    查看底部即最新300条日志记录,并实时刷新      

    grep 'nick' | tail web.2016-04-04.log -C 10   
    查看字符‘nick’前后10条日志记录, 大写C  

    cat -n test.log | tail -n +92 | head -n 20  
    tail -n +92表示查询92行之后的日志  
    head -n 20 则表示在前面的查询结果里再查前20条记录  
     

    展开全文
  • Linux 查看日志命令tail的用法

    千次阅读 2021-11-19 15:39:20
    tail 命令可用于查看文件的内容。 最常用到的是参数 -f ,用于查阅正在改变的日志文件。 命令格式: tail [参数] [文件] 参数: -f 循环读取,监视文件的尾部内容(默认10行,相当于增加参数 -n 10) -q 不显示...

    tail 命令可用于查看文件的内容。

    最常用到的是参数 -f ,用于查阅正在改变的日志文件。

    命令格式:

    tail [参数] [文件] 
    

    参数:

    • -f 循环读取,监视文件的尾部内容(默认10行,相当于增加参数 -n 10)
    • -q 不显示处理信息
    • -v 显示详细的处理信息
    • -c<数目> 显示的字节数
    • -n<行数> 显示文件的尾部 n 行内容
    • –pid=PID 与-f合用,表示在进程ID,PID死掉之后结束
    • -q, --quiet, --silent 从不输出给出文件名的首部
    • -s, --sleep-interval=S 与-f合用,表示在每次反复的间隔休眠S秒

    可以执行命令tail --help就能看到tail命令介绍

    -c, --bytes=K            output the last K bytes;
                               or use -c +K to output bytes starting with the Kth of each file
                               输出最后的 K 个字节;
    			               或者使用 -c +K 从每个文件的第K字节开始打印。
      -f, --follow[={name|descriptor}]
                               output appended data as the file grows;
                               an absent option argument means 'descriptor'
                               随着文件的增长,输出附加数据;(动态输出最新的信息);
                               没有选项参数意味着“描述符”
                               
      -F                       same as --follow=name --retry
                               与 --follow=name --retry 作用相同
                               
      -n, --lines=K            output the last K lines, instead of the last 10;
                               or use -n +K to output starting with the Kth
                               输出最后的K行,而不是最后的10行;
                               或者使用-n +K从第K个开始输出
                               
          --max-unchanged-stats=N
                               with --follow=name, reopen a FILE which has not changed size after N (default 5) iterations to see if it has been unlinked or renamed (this is the usual case of rotated log files);
                               with inotify, this option is rarely useful
                               使用——follow=name,在N次(默认为5次)迭代后,重新打开一个大小没有改变的文件,看看它是否被解除链接或重命名(这是旋转日志文件的常见情况);
                               对于inotify,这个选项很少有用
                                 
          --pid=PID            with -f, terminate after process ID, PID dies
                               与“-f”选项连用,当指定的进程号的进程终止后,自动退出tail命令
                               
      -q, --quiet, --silent    never output headers giving file names
                               当有多个文件参数时,不输出各个文件名
                               
          --retry              keep trying to open a file if it is inaccessible
                               即是在tail命令启动时,文件不可访问或者文件稍后变得不可访问,都始终尝试打开文件。使用此选项时需要与选项“——follow=name”连用
                               
      -s, --sleep-interval=N   
                               with -f, sleep for approximately N seconds (default 1.0) between iterations;
                               with inotify and --pid=P, check process P at least once every N seconds
                               与“-f”选项连用,指定监视文件变化时间隔的秒数(默认为1.0);
    			               使用inotify和-pid=P,每N秒检查进程P至少一次
    			               
      -v, --verbose            always output headers giving file names
                               当有多个文件参数时,总是输出各个文件名
                               
          --help               display this help and exit
                               显示此帮助信息并退出
                               
          --version            output version information and exit
                               显示版本信息并退出
    

    其中 tail -f与tail -F的区别:
    tail -f

    等同于–follow=descriptor,根据文件描述符进行追踪,当文件改名或被删除,追踪停止

    tail -F

    等同于–follow=name --retry,根据文件名进行追踪,并保持重试,即该文件被删除或改名后,如果再次创建相同的文件名,会继续追踪

    tailf

    等同于tail -f -n 10(貌似tail -f或-F默认也是打印最后10行,然后追踪文件),与tail -f不同的是,如果文件不增长,它不会去访问磁盘文件,减少了磁盘访问,所以tailf特别适合那些便携机上跟踪日志文件。

    如果遇到日志文件较大的时候,通常会输出的行数来查看日志:

    // 默认显示 log 文件的最后 10tail test.log
     
    // 显示 log 文件的最后 10 行,同时跟踪名为文件的增长情况,直到您按下(Ctrl-C)组合键停止显示。
    tail -f test.log
     
    // 显示 log 文件的最后 n 行,同时跟踪名为文件的增长情况,直到您按下(Ctrl-C)组合键停止显示。
    tail -nf test.log
     
    // 显示文件的最后 10tail -n 10 filename
     
    // 文件的第 9 行不显示,显示第 10 行到末尾行
    tail -n -10 filename
     
    // 显示文件的第 10 行到末尾行
    tail -n +10 filename
     
    逆序显示filename最后10行。
    tail -r -n 10 filename
     
    // 显示第20行至末尾
    tail +20 test.log
     
    // 显示最后10个字符
    tail -c 10 test.log
    

    退出:
    按下CTRL+C。

    展开全文
  • linux 查看日志常用命令 linux 查看日志常用命令 linux 查看日志常用命令
  • Linux查看日志三种命令(转载)

    千次阅读 2021-05-13 00:58:46
    第一种:查看实时变化的日志(比较吃内存)最常用的:tail -f filename (默认最后10行,相当于增加参数 -n 10)Ctrl+c 是退出tail命令其他情况:tail -n 20 filename (显示filename最后20行)tail -n +5filename (从第5行...
  • Linux查看日志命令(汇总)

    千次阅读 2021-06-17 18:58:44
    做任何项目都会做日志文件记录,那么项目发布到线上后,如何查看输出的日志文件内容呢 个人使用tail、tailf、cat、more多一些,下面补充一些! 1、tail 命令格式: tail[必要参数][选择参数][文件] -f 循环读取 -q ...
  • 总结下在 Linux 系统上查看项目日志的几种方式,很实用的~ 一、查看较小的日志文件 假设日志文件名为 service-2020-02-20.log,当日志文件不是很大的时候,比如10页以内能全部看完的话,我们可以用以下几种方式查看...
  • Linux查看日志的常用命令

    千次阅读 2022-03-18 08:39:49
    Linux常用快捷键 查询最近多少条日志 根据关键字查询日志 根据关键字查出后多少行的日志 根据关键字查询日志的后100行中包含关键字的前后10行 根据时间段查询日志
  • Linux查看日志命令,压缩日志不解压直接查看 监控日志命令 tail -f file.log tailf file.log # 上一个命令的快捷键,但是有些系统默认没有 查看日志命令,这个命令其实也可以查看压缩后的日志文件,当然也可以...
  • 下面小编就为大家带来一篇linux下实时查看tomcat运行日志的方法。小编觉得挺不错的,现在就分享给大家,也给大家做个参考。一起 小编过来看看吧
  • linux查看日志文件内容命令tail、cat、tac、head、echotail -f test.log你会看到屏幕不断有内容被打印出来. 这时候中断第一个进程Ctrl-C,---------------------------linux 如何显示一个文件的某几行(中间几行)从第...
  • Linux中常用查看日志命令

    千次阅读 2021-09-01 08:41:44
    Linux常用查看日志命令写在前面1, 查看当前日志方法1: 先切换到日志文件所在目录, 再查看日志例子+命令:方法2: 直接查看当前日志tips:2, 操作当前日志2.1 上下翻页2.2 上下翻行2.3 搜索关键字2.3.1 从当前位置向下...
  • linux查看系统日志常见命令以及方法

    千次阅读 2021-11-17 13:53:52
    linux查看系统日志常见命令以及方法 一、head 二、tail 三、cat 四、grep 五、查看日志的方法 linux查看系统日志常见命令以及方法 在日常工作中,为了排查定位问题,经常需要登录到linux系统,查看异常error...
  • Linux服务器查看日志

    2021-01-09 10:05:09
    这里从最基础的命令总结一下如何查看线上日志。 我使用的xshell,登录服务所部署的那台服务器,进入项目日志路径。 命令:cd xxxx(文件名) 当你找到日志文件了,可以输入例如命令: tail -n 1000 log_info.log | ...
  • 下面小编就为大家带来一篇LINUX 查找tomcat日志关键词命令。小编觉得挺不错的,现在就分享给大家,也给大家做个参考。一起跟随小编过来看看吧
  • 服务器查看日志命令
  • Linux系列】Linux实践(一):linux常用命令Linux系列】Linux实践(二):CentOS系统中搭建java开发环境与部署web项目 【Linux系列】Linux实践(三):CentOS中安装(卸载)Mysql以及数据库的导入...
  • Linux实时查看日志的四种命令详解

    千次阅读 2021-05-09 06:28:57
    如何在Linux中实时查看日志文件的内容?那么有很多实用程序可以帮助用户在文件更改或不断更新时输出文件的内容。在Linux中实时显示文件内容的常用命令是tail命令(有效地管理文件)。1. tail命令 - 实时监控日志如上所...
  • 作为一名后端程序员,和Linux打交道的地方很多,不会看Linux日志,非常容易受到来自同事和面试官的嘲讽,所以掌握一种或者几种查看日志的方法非常重要。 Linux查看日志的命令有多种: tail、cat、tac、head、echo等,...
  • 从命令行如何查看Linux日志

    千次阅读 2021-05-08 21:31:35
    本文作者介绍了在Linux查看日志的具体方法。在你作为Linux管理员的职业生涯中,应该早晚都会查看日志文件。因为日志文件可以帮助你排查问题,每个经验丰富的管理员在出现问题后,要做的头一件事就是查看日志。你会...
  • 常用Linux日志查看命令

    万次阅读 多人点赞 2017-06-04 15:26:07
    常用Linux日志查看命令 欢迎关注公众号【程猿薇茑】 查看Web应用程序的运行日志解决运行时异常、出错是一项基本功。在Web程序中我们通过日志系统(比如log4j)向外部文件(比如log.txt)写入了程序运行时的某些...
  • Linux 查看日志文件命令

    万次阅读 2017-08-23 11:05:31
    tail head cat tac echo 1. tailtail -f test....2. headlinux 如何显示一个文件的某几行(中间几行)从第3000行开始,显示1000行。即显示3000~3999行cat test.log | tail -n +3000 | head -n 1000显示1000行到3000行ca
  • linux查看日志命令

    千次阅读 2018-11-23 17:21:54
    第一种:查看实时变化的日志(比较吃内存) 最常用的: tail -f filename (默认最后10行,相当于增加参数 -n 10) Ctrl+c 是退出tail命令 其他情况: tail -n 20 filename (显示filename最后20行) tail -n +5 ...
  • Linux查看日志常用命令

    千次阅读 2021-05-13 03:10:18
    相当于nl命令;例子如下:tail -100f test.log 实时监控100行日志tail -n 10 test.log 查询日志尾部最后10行的日志;tail -n +10 test.log 查询10行之后的所有日志;head:跟tail是相反的,tail是看...
  • Linux 实时查看日志文件,最主要使用的就是tail命令linux tail命令用于显示文件尾部的内容,默认在屏幕上显示指定文件的末尾10行。如果给定的文件不止一个,则在显示的每个文件前面加一个文件名标题。如果没有...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 529,005
精华内容 211,602
关键字:

linux查看日志命令