当前位置: 首页 > Linux

日志分析必备指令集【摘自一段在线日志查看心得】

时间:2023-04-07 00:59:40 Linux

在线日志查看基础查看在线机器的一些信息和基本命令:du,df查看大小相关cat,zcat,less,tail,head查看文件内容grep,awk进程文件内容排序,uniq,wc统计scp文件传输du,df查看大小相关df查看系统挂载磁盘大小df[option]...[FILE]...file-a,--allInclude所有具有0个块的文件系统文件--block-size={SIZE}使用大小为{SIZE}的块文件-h,--human-readable使用人类可读格式(默认值不添加此选项...)file-H,--si类似于-h,但是以1000为单位,而不是1024size=1024file-l,--local限制列出的文件结构file-m,--megabytes类似于--block-size=1048576file--no-syncgetinfodonotsyncbefore(default)files-P,--portability使用POSIX输出格式文件--sync在获取信息之前同步文件-t,--type=TYPE限制TYPE文件列出文件系统-T,--print-type显示文件系统文件的形式-x,--exclude-type=TYPE限制文件系统列表不显示TYPE文件-v(忽略)常用用法举例:df-hdu会显示指定目录或文件占用的磁盘空间du[-abcDhHklmsSx][-L][-X<文件>][--块大小][--exclude=<目录或文件>][--max-depth=<目录级别数>][--help][--version][directoryorfile]参数说明:-a或-all显示目录中个别文件的大小。-b或-bytes显示目录或文件大小时,单位为byte。-c或--total除了显示单个目录或文件的大小外,它还显示所有目录或文件的总和。-D或--dereference-args显示指定符号链接的源文件大小。-h或--human-readable使用K、M、G为单位,提高信息的可读性。-H或--si与-h参数相同,只是K、M、G以1000为单位进行转换。-k或--kilobytes以1024字节为单位进行转换。-l或--count-links过度计算硬件链接的文件。-L或--dereference显示选项中指定的符号链接的源文件大小。-m或--megabytes以1MB为单位。-s或--summarize仅显示总数。-S或--separate-dirs显示单个目录的大小时,不包括其子目录的大小。-x或--one-file-xystem是根据文件系统开始处理的,如果遇到其他不同的文件系统目录则跳过。-X或--exclude-from=中指定目录或文件。--exclude=<目录或文件>跳过指定的目录或文件。--max-depth=<目录层数>目录超过指定层数后,将被忽略。示例:查看当前文件夹一级内容大小du-h--max-depth=1cat,zcat,less,tail,head查看文件内容cat命令用于连接文件并打印到标准输出devicecat[-AbeEnstTuv][--help][--version]fileName`-n或--number`:从1开始为所有输出行编号。`-b或--number-nonblank`:类似于-n,除了空白行没有编号。`-sor--squeeze-blank`:当连续空行超过2个时,用1个空行替换。`-v或--show-nonprinting`:除了LFD和TAB之外,还使用??^和M-符号。`-E或--show-ends`:在每行末尾显示$。`-T或--show-tabs`:将TAB字符显示为^I。`-A,--show-all`:等同于-vET。`-e`:相当于`"-vE"`选项;`-t`:相当于`"-vT"`选项;zcatt命令用于在不实际解压文件内容的情况下显示压缩包中的文件。head将文件的开头显示到标准输出,默认head命令打印其对应文件的前10行head[parameter]...[file]...`-q`hidefilename`-v`show文件名`-c`显示字节数`-n`显示行数tail用来查看文件内容,有个常用参数-f经常用来查看logfilebeingchangedtail[requiredparameter][selectionparameter][file]`-f`循环读取`-q`不显示处理信息`-v`显示详细处理信息`-c`显示的字节数`-n<行数>`显示行数`--pid=PID与-f一起使用,表示在进程ID和PID消??亡后结束。`-q,--quiet,--silent`Neveroutputtheheaderofthegivenfilename`-s,--sleep-interval=S和-f一起使用,意思是每次重复间隔少睡S秒可以随意浏览文件less[parameter]file`-b`设置缓冲区的大小`-e`当文件显示结束时,自动离开`-f`强制打开特殊文件,比如外围设备代码、目录和二进制文件`-g`只标记最后一次搜索关键字`-i`搜索时忽略大小写`-m`显示百分比类似more命令`-N`显示每行的行号`-o<文件名>`将less的输出保存到指定文件中`-Q`不使用警告音`-s`在一行中显示连续的空行`-S`如果行太长,多余部分将被删除discarded`-x`将“tab”键显示为指定的数字空格`/string`:向下搜索“string”函数`?string`:函数`n`向上搜索“string”:重复上次搜索(相对于/或?)`N`:反向重复上次搜索(相对于/或?)`b`返回一页`d`返回半页`h`显示帮助界面`Q`退出less命令`u`向前滚动半页`y`向前滚动一行`空格键`滚动一行`回车键`滚动一页`[pagedown]`:向下翻一页`[pageup]`:翻一页upgrep,awk处理文件内容grep用于在文件中查找满足条件的字符串。grep[-abcEFGhHilLnqrsvVwxy][-A<显示列数>][-B<显示列数>][-C<显示列数>][-d<动作>][-e<模板样式>][-f][--help][templatestyle][fileordirectory...]-aor--text:不要忽略二进制数据。-A<显示行数>或--after-context=<显示行数>:除了显示符合模板样式的列外,还显示行后的内容。-b或--byte-offset:在显示与模式匹配的行之前,标记该行第一个字符的编号。-B<显示行数>或--before-context=<显示行数>:除了显示符合样式的行外,还显示行前的内容。-c或--count:计算匹配样式的列数。-C<显示行数>或--context=<显示行数>或-<显示行数>:除了显示符合样式的行外,还显示该行前后的内容。-dor--directories=:当指定要搜索的目录不是文件时必须使用该参数,否则grep命令会报错并停止动作。-e或--regexp=:指定一个字符串作为查找文件内容的模式。-E或--extended-regexp:使用样式作为扩展的普通符号。-for--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:在显示符合样式的行之前,标记该行的列号。-q或--quiet或--silent:不显示任何信息。-r或--recursive:此参数的效果与指定“-drecurse”参数相同。-s或--no-messages:不显示错误信息。-v或--revert-match:显示所有不包含匹配文本的行。-V或--version:显示版本信息。-w或--word-regexp:只显示匹配整个单词的列。-x--line-regexp:只显示匹配所有列的列。-y:此参数的作用与指定“-i”参数相同。awk是一种处理文本文件的语言,是一个强大的文本分析工具。awk'{pattern+action}'{filenames}或awk[-Ffield-separator]'commands'input-file(s)awk-F,'$2~/test/{print$2"\t"$4}'log.txt使用-F,作用是对每一行进行拆分,$1-$2-$n为拆分结果对应序列的值$2~/th/为第二个需要拆分的数据,需要matchthetest{print$2$4}输出分词结果的第二个和第四个处理信息为log.txtawk-F'[:=]''{match($5,/.*uc_name=(.*)&extend=test.*/,A);printa[1]}'log.txt-F'[:=]'使用多个分隔符,先用:分隔,再用=分隔两次结果。'{匹配($5,/.*uc_name=(.*)&extend=test.*/,a);printa[1]}'处理拆分后的第5个结果,需要能够匹配其中的正则,并将匹配的结果放入数组a中,其中a数组的结果a[0]为结果全匹配的a[1]是正则匹配子表达式的结果,输出子表达式。sort、uniq、wc统计排序用于对文本文件的内容进行排序。sort[-bcdfimMnr][-o<输出文件>][-t<分隔符>][+<开始字段>-<结束字段>][--help][--verison][文件]-b忽略空格每行开头的字符。-c检查文件是否按顺序排序。-d排序时,处理英文字母、数字和空格字符,忽略其他字符。-f排序时,将小写字母视为大写字母。-i排序时,忽略除040到176之间的ASCII字符以外的字符。-m合并几个已排序的文件。-M根据月份的缩写对前3个字母进行排序。-n根据值的大小排序。-o将排序后的结果保存到指定的文件中。-r逆序排序。-t指定用于排序的列分隔符。+<起始列>-<结束列>按指定列排序,范围从起始列到结束列的上一列。uniq用于检查删除文本文件中重复的行和列,需要结合sort命令使用【必须排序,否则去重无效,只去除相邻的重复项】uniq[-cdu][-f][-s][-w][--help][--version][inputfile][outputfile]-cor--countshownexteach该行的列重复出现的次数。-d或--repeated只显示重复的行和列。-f或--skip-fields=忽略指定的字段进行比较。-s或--skip-chars=跳过指定字符的比较。-u或--unique只显示行和列一次。-w<字符位置>或--check-chars=<字符位置>指定要比较的字符。wc计算文件的字节数、字数或列数。如果没有指定文件名,或者给定的文件名是“-”,wc命令将从标准输入设备读取数据。uniq[-cdu][-f<字段>][-s<字符位置>][-w<字符位置>][--help][--version][输入文件][输出文件]-c或--bytes或--chars只显示字节数。-l或--lines只显示行数。-w或--words只显示字数。scpfiletransferscp是linux系统下基于ssh登录的安全远程文件拷贝命令【需要配置ssh登录、密码或者公钥free】scp[-1246BCpqrv][-ccipher][-Fssh_config][-iidentity_file][-l限制][-ossh_option][-P端口][-S程序][[user@]host1:]file1[...][[user@]host2:]file2-1:强制scp命令使用协议ssh1-2:强制scp命令使用协议ssh2-4:强制scp命令仅使用IPv4寻址-6:强制scp命令仅使用IPv6寻址-B:使用批处理模式(不要求传输密码或短语)-C:允许压缩。(将-C标志传递给ssh以启用压缩)-p:保留原始文件的修改时间、访问时间和访问权限。-q:不显示传输进度条。-r:递归复制整个目录。-v:以详细模式显示输出。scp和ssh(1)将显示整个过程的调试信息。此信息用于调试连接、身份验证和配置问题。-ccipher:使用cipher加密数据传输,这个选项会直接传给ssh。-Fssh_config:指定一个替代的ssh配置文件,这个参数直接传递给ssh。-iidentity_file:从指定文件中读取用于传输的密钥文件,该参数直接传递给ssh。-llimit:限制用户可以使用的带宽,单位为Kbit/s。-ossh_option:如果习惯使用ssh_config(5)中的参数传递方式,-Pport:注意是大写的P,port是用于指定数据传输的端口号-Sprogram:指定使用的程序用于加密传输。该程序必须了解ssh(1)选项。练习在线日志结构:183.250.223.158[16/Dec/2018:23:57:15+0800]"GET/log?skdata=sdadadad111%22username%33%3ftestets%22fsfdsfssadadasd%34fdsfs%34HTTP/1.0"2002"-》"testiPhone/d64556""120.188.90.136""jsdgajdsad""dasdadd""test""ceshi"命令分析数据:cat/home/logs/2018/12/access.2018-12-16.log|grep-E'skdata.*用户名'|awk'{匹配($5,/.*用户名%33%3f(.*)%22fsfdsfssadadasd.*/,a);打印a[1]}'|排序|uniq-c|wc-lcat查看某天的日志文件,一般访问日志文件每天记录一个grep查看满足要求的访问日志,本例使用正则匹配-E过滤出满足的详细页面访问日志要求,awk分析输出满足要求详情页访问日志每行的详情页访问日志,每行$5[第5个字符串用空格隔开,本例为/log?开头的字符串]详情页访问日志匹配一个正则*用户名%33%3f(.*)%22fsfdsfssadadasd.*,并将结果放入变量a中[a[0]为全匹配,a[1]为全匹配firstwordexpression],然后输出匹配结果成功的a[1]进行排序对上面的结果进行排序[必须排序,否则去重无效,只去除相邻的重复项]uniq-cdeduplicatetheaboveresultswc-l查看结果总数