1、首先进入系统日志,所有服务的登录的文件或错误信息文件,都在/var/log/记录下来 cd /var/log/。
2、/var/log/secure:记录登录系统存取数据的文件/var/log/message:几乎所有的开机系统发生的错误都会在此记录。
3、tail -n 10 filename.log执行这个命令,查询日志尾部最后10行的日志。
4、tail -n +20 filename.log,查询20行之后的日志。
5、head -n 20 filename.log 查询日志前十条。
6、cat -n filename.log |grep "1.0.0" 安装关键词“1.0.0”进行搜索日志。
截取一段时间内的log日志可以使用sed命令对log文件进行抽取 *** 作:1,sed查看某时间段到现在的系统日志:
sed -n '/May 20 17/,$p' /var/log/messages | less
2,sed 截选时间段日志:
假如日志的格式是--
“2015-05-04 09:25:55,606 后面跟日志内容 ”这样的
目标是需要将05-04的09:25:55 和09:28:08 之间的日志截取出来:
使用sed命令如下:
sed -n ‘/2015-05-04 09:25:55/,/2015-05-04 09:28:55/p’ logfile
这样可以精确地截取出来某个时间段的日志。
如果需要截取的日志太大,达到几个G的话,不能去vi打开文件:
根据之前的日志格式,使用正则表达式:
sed -n ‘/2010-11-17 09:[0-9][0-9]:[0-9][0-9]/,/2010-11-17 16:[0-9][0-9]:[0-9][0-9]/p’ logfile
如果没有问题的话,上面就能筛选出指定的时间段的日志。
其实要说回答很简单,但是要给你做出来稍微费工夫,因为没有环境可以测试,你可以写一段shell代码来提取,也可以用sed/awk/grep等命令来做,但是命令的复杂度不亚于写一段shell代码。shell代码我给你算法吧。(括号里是参考代码,bash)初始化变量(flg=0)
循环读取每一行文件(while line in `cat $log`)
变量开始[sip/2.0]为真时( if [ $flg -eq 1 ]then )
输出当前行到结果文件中( echo $line >>$retFile )
如果是用户结束 ( chkEnd $line #chkEnd 是个shell函数检查是不是结束
if [ $? -eq 1 ]then)
变量变量开始[sip/2.0]设置为假 (flg=0)
#如果是用户结束(fi)
否则(else)
如果当前行含有[sip/2.0]( echo $line | grep "[sip/2.0"
if [ $? -eq 0 ]then)
输出当前行到结果文件中(echo $line >>$retFile)
变量变量开始[sip/2.0]设置为真(flg=1)
#如果当前行含有[sip/2.0](fi)
#变量开始[sip/2.0]为真时(fi)
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)