linux下怎么把日志拷贝出来

linux下怎么把日志拷贝出来,第1张

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)


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/yw/7882740.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-04-11
下一篇 2023-04-11

发表评论

登录后才能评论

评论列表(0条)

保存