问题排查常用linux命令
tail head:
tail -f #监听写入
tail -100 #查看末尾100行
head -100 #查看开头100行
tail -100f
grep:
grep keyWord foo.txt #在文件中查找keyWord行, 可以跟多个文件
grep keyWord ./ -r #在目录下查找包含keyWord的行,目录中查找需要 -r 参数递归查找的意思
grep keyWord ./*.vm #支持通配符
另:最后可以跟 -C 3 参数,表示展示匹配行的上下3行
awk:
awk是一个强大的文本分析工具,awk把文件逐行读入,以空格和tab为默认分隔符将每行切片,切开的部分再进行各种分析处理。awk是以文件的一行为处理单位的,读完一行,将记录按照指定的分隔符划分域,$0表示所有域,$1表示第一个域,$n表示第n个域。
通用使用方法:awk -F: '[pattern]{action}' filename #-F指定分隔符,pattern支持正则,可选,匹配相应行;action是awk内置动作,常用的print
awk '{print $1}' f.md #打印第一个域的内容
awk '{print NR, FNR, FILENAME, NF}' f.md #几个内建变量:NR行数,FNR文件行数,处理多个文件使用,NF某一行域个数
--匹配
可以直接使用== > <等进行比较
awk '$5 == "test" {print $0}' f.md #第五列等于test
awk '/key/' f.md #匹配含有key关键字的行,默认打印
awk '!/key/' f.md #匹配不含邮key关键字的行
awk '/key/ && /word/' f.md #匹配含有key和word的行
awk '$5 ~ /key/' f.md #
--高级用法
拆分文件:
netstat | awk 'NR!=1{print > $6}' #根据第6列拆分文件
使用if elseif
netstat | awk 'NR!=1{if($6 ~ /list/) print > 1.txt; else if($6 ~ /test/) print > 2.txt else print > 3.txt}'
使用for
ps aux | awk 'NR!=1{a[$1]+=$6;} END {for(i in a) print i ", " a[i];}'
脚本
awk -f script.awk f.md #对f.md执行脚本,脚本内容与引号内相同
BEGIN{处理文本前执行}
END{处理完所有行后执行}
{匹配完每一行后执行}
find:
find 多个目录 -name *.log #在目录下查找文件
find 多个目录 -iname *.log #不区分大小写
tail head:
tail -f #监听写入
tail -100 #查看末尾100行
head -100 #查看开头100行
tail -100f
grep:
grep keyWord foo.txt #在文件中查找keyWord行, 可以跟多个文件
grep keyWord ./ -r #在目录下查找包含keyWord的行,目录中查找需要 -r 参数递归查找的意思
grep keyWord ./*.vm #支持通配符
另:最后可以跟 -C 3 参数,表示展示匹配行的上下3行
awk:
awk是一个强大的文本分析工具,awk把文件逐行读入,以空格和tab为默认分隔符将每行切片,切开的部分再进行各种分析处理。awk是以文件的一行为处理单位的,读完一行,将记录按照指定的分隔符划分域,$0表示所有域,$1表示第一个域,$n表示第n个域。
通用使用方法:awk -F: '[pattern]{action}' filename #-F指定分隔符,pattern支持正则,可选,匹配相应行;action是awk内置动作,常用的print
awk '{print $1}' f.md #打印第一个域的内容
awk '{print NR, FNR, FILENAME, NF}' f.md #几个内建变量:NR行数,FNR文件行数,处理多个文件使用,NF某一行域个数
--匹配
可以直接使用== > <等进行比较
awk '$5 == "test" {print $0}' f.md #第五列等于test
awk '/key/' f.md #匹配含有key关键字的行,默认打印
awk '!/key/' f.md #匹配不含邮key关键字的行
awk '/key/ && /word/' f.md #匹配含有key和word的行
awk '$5 ~ /key/' f.md #
--高级用法
拆分文件:
netstat | awk 'NR!=1{print > $6}' #根据第6列拆分文件
使用if elseif
netstat | awk 'NR!=1{if($6 ~ /list/) print > 1.txt; else if($6 ~ /test/) print > 2.txt else print > 3.txt}'
使用for
ps aux | awk 'NR!=1{a[$1]+=$6;} END {for(i in a) print i ", " a[i];}'
脚本
awk -f script.awk f.md #对f.md执行脚本,脚本内容与引号内相同
BEGIN{处理文本前执行}
END{处理完所有行后执行}
{匹配完每一行后执行}
find:
find 多个目录 -name *.log #在目录下查找文件
find 多个目录 -iname *.log #不区分大小写