zoukankan      html  css  js  c++  java
  • 如何快速查看Linux日志?

    因为在生产环境会遇到很多问题,那么最快的定位方式莫过于去看日志,我们都知道服务器每天会产生大量的日志,那么如何快速的定位也就是最关键的。

    本文介绍六种查看日志的命令:tailheadcatmorelesssed

    一、tail

    1.1 命令功能

    tail 命令从指定点开始将文件写到标准输出。

    1.2 命令格式

    tail[必要参数][选择参数][文件]

    1.3 命令参数

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

    1.4 使用实例

    tail  -n  10   file.log   查询日志尾部最后10行的日志;
    tail  -n +10   file.log   查询第10行之后的所有日志;
    tail  -fn 100   file.log   循环实时查看最后100行记录
    
    • tail一般还会配合着grep
    tail -fn 1000 file.log | grep '关键字'
    
    • 如果查询的数据量太大,Ctrl + F 或者 空格键可以翻页查看
    tail -n 5000  file.log |more -1000
    

    二、head

    2.1 命令功能

    headtail是相反,用来显示档案的开头至标准输出中,默认head命令打印其相应文件的开头10行。

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

    2.2 命令格式

    tail[必要参数][选择参数][文件]

    2.3 命令参数

    参考tail

    三、cat

    3.1 命令功能

    1. 一次显示整个文件:cat filename
    2. 从键盘创建一个文件(只能创建新文件,不能编辑已有文件):cat > filename
    3. 将几个文件合并为一个文件:cat file1 file2 > file

    3.2 命令格式

    cat [选项] [文件]...

    3.3 命令参数

    -A, --show-all           等价于 -vET
    -b, --number-nonblank    对非空输出行编号
    -e                       等价于 -vE
    -E, --show-ends          在每行结束处显示 $
    -n, --number     对输出的所有行编号,由1开始对所有输出的行数编号
    -s, --squeeze-blank  有连续两行以上的空白行,就代换为一行的空白行 
    -t                       与 -vT 等价
    -T, --show-tabs          将跳格字符显示为 ^I
    -v, --show-nonprinting   使用 ^ 和 M- 引用,除了 LFD 和 TAB 之外
    

    3.4 使用实例

    • file1.log 的文件内容加上行号后输入 file2.log 这个文件里
    cat -n file1.log file2.log
    
    • file1.logfile2.log 的文件内容加上行号(空白行不加)之后将内容附加到 file.log
    cat -b file1.log file1.log file.log
    
    • file1.log 的文件内容加上行号后输入 file.log 这个文件里
    cat -n file1.log > file.log
    

    tac 是将 cat 反写过来,所以他的功能就跟 cat 相反

    四、more

    4.1 命令功能

    more命令和cat的功能一样都是查看文件里的内容,但有所不同的是more可以按页来查看文件的内容,还支持直接跳转行等功能。

    4.2 命令语法

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

    4.3 命令参数

    +n      从笫n行开始显示
    -n       定义屏幕大小为n行
    +/pattern 在每个档案显示前搜寻该字串(pattern),然后从该字串前两行之后开始显示  
    -c       从顶部清屏,然后显示
    -d       提示“Press space to continue,’q’ to quit(按空格键继续,按q键退出)”,禁用响铃功能
    -l        忽略Ctrl+l(换页)字符
    -p       通过清除窗口而不是滚屏来对文件进行换页,与-c选项相似
    -s       把连续的多个空行显示为一行
    -u       把文件内容中的下画线去掉
    

    4.4 常用操作命令

    Enter 向下n行,需要定义,默认为1行
    Ctrl + F 向下滚动一屏
    空格键 向下滚动一屏
    Ctrl + B 返回上一屏
    = 输出当前行的行号
    :f 输出文件名和当前行的行号
    V 调用vi编辑器
    !命令 调用Shell,并执行命令
    q 退出more
    

    4.5 使用示例

    • 显示文件中从第3行起的内容
    more +3 file.log
    
    • 从文件中查找第一个出现test字符串的行,并从该处前两行开始显示输出
    more +/test file.log
    
    • 设定每屏显示行数
    more -5 log2012.log
    

    五、less

    5.1 命令功能

    lessmore类似,使用less可以随意浏览文件,而more仅能向前移动,不能向后移动,而 less 既可以向前移动,也可以向后移动。

    5.2 命令格式

    less [参数]  文件 
    

    5.3 命令参数

    -b <缓冲区大小> 设置缓冲区的大小
    -e  当文件显示结束后,自动离开
    -f  强迫打开特殊文件,例如外围设备代号、目录和二进制文件
    -g  只标志最后搜索的关键词
    -i  忽略搜索时的大小写
    -m  显示类似more命令的百分比
    -N  显示每行的行号
    -o <文件名> 将less 输出的内容在指定文件中保存起来
    -Q  不使用警告音
    -s  显示连续空行为一行
    -S  行过长时间将超出部分舍弃
    -x <数字> 将“tab”键显示为规定的数字空格
    

    5.4 常用操作命令

    /字符串:向下搜索“字符串”的功能
    ?字符串:向上搜索“字符串”的功能
    n:重复前一个搜索(与 / 或 ? 有关)
    N:反向重复前一个搜索(与 / 或 ? 有关)
    b  向后翻一页
    d  向后翻半页
    h  显示帮助界面
    Q  退出less 命令
    u  向前滚动半页
    y  向前滚动一行
    空格键 滚动一行
    回车键 滚动一页
    [pagedown]: 向下翻动一页
    [pageup]:   向上翻动一页
    

    5.5 less命令在查询日志时,一般流程是这样的

    1. less file.log
    2. shift + G 命令到文件尾部 然后输入 加上你要搜索的关键字例如:?test
    3. n 向上查找关键字
    4. shift + n 反向查找关键字

    六、sed

    6.1 命令功能

    这个命令可以查找日志文件特定的一段 , 根据时间的一个范围查询,可以按照行号和时间范围查询

    6.2 使用示例

    • 按照行号:只查看文件的第5行到第10
    sed -n '5,10p' file.log
    
    • 按照时间段
    sed -n '/2019-12-17 16:17:20/,/2019-12-17 16:17:36/p'  file.log
    

    七、技术交流

    1. 风尘博客
    2. 风尘博客-掘金
    3. 风尘博客-博客园
    4. Github
  • 相关阅读:
    Android反编译apk并重新打包签名(Mac环境)
    Android Studio修改apk打包生成名称
    Mac搭建SVN服务器+Cornerstone连接服务器
    Android Studio中使用Git进行代码管理(分支、合并)
    Android Studio之SVN打分支、切换分支及合并分支
    一次真实的线上OOM问题定位
    水平分库如何做到平滑扩展
    case when / if else-if 的大坑,要当心!!!
    项目启动时 xml报错:Could not find SQL statement to include with refid 'mbgl.panDuanZbsfkxg'
    只需要返回一条数据,并且必须返回一条数据的时候的写法
  • 原文地址:https://www.cnblogs.com/vandusty/p/12295504.html
Copyright © 2011-2022 走看看