小弟最近在帮忙排查生产环境上的问题,所以需要看生产上的日志,好久没摸过服务器了,特此记录一下使用的Linux命令。
grep命令是在linux下看日志时经常会用到的
grep:查找文件中包含指定文本的命令
比如:grep '123456789' 20211018.log ---输出2021101801.log这个日志下包含123456789的记录
当然grep肯定不止这么简单,下面写下常用到的~
grep '123456789' * ---输出当前文件夹下所有包含123456789'的记录
比如当前目录 /home/logs/log-20211018,查找的是log-20211018文件夹下所有且包含123456789的记录
grep -r '123456789' * ---输出当前目录以及子目录下所有包含123456789'的记录,r=Recursive递归
比如当前目录 /home/logs/log-20211018,查找的是当前目录和子目录下所有且包含123456789的记录
grep -l -r ‘energywise’ * ---输出当前目录及其子目录下包含'123456789'行的记录,但是不显示匹配的行,只显示匹配的文件。
grep -i 不分区大小写
grep -v 显示除匹配以外的内容(就是不包含的意思)
grep -n 显示匹配的行并行显示当前行数是多少
grep -c 显示匹配的行数总和(注意是行数,如果一行匹配到两个也算一行)
tail命令用在测试环境比较多,可以查看实时日志信息,便于定位错位。
tail -f 20211018.log ---实时查看20211018.log日志输出
tail -n 100 20211018.log ---输出20211018.log最新的100行
head命令用的不多,主要是看文件的头几行吧
hear -n 50 20211018.log ---输出20211018.log前50行记录
生产环境的日志文件一般都是非常大的,要在一个很大的日志中搜索或者下载某部分内容相当不容易,此时可以用sed命令!
输出某一段时间内的日志(日志输出需要有时间的才可以)
sed -n '/2021-10-18 08:00/,/2021-10-18 10:00/p' 20211018.log
输出某一段时间包含“xiaohu”的行数
sed -n '/2021-10-18 08:00/,/2021-10-18 10:00/p' 20211018.log | grep -c "xiaohu"
将某段时间内的日志保存到一个新文件中
sed -n '/2021-10-18 08:00/,/2021-10-18 10:00/p' 20211018.log > newlog.log
这个命令很强大,目前我也没用到过,之后会单独学习一下