Linux日志截取利器——sed命令(亲测可用)

Linux日志截取利器——sed命令(亲测可用),第1张

在生产环境中,往往没有条件给我们去debug排查,更多时候我们是通过日志来看具体的报错日期。

但是日志往往是一直在实时更新,而且记录条数庞大,很难直接定位到错误信息。这个时候,就可以利用sed命令来截取指定时间段内的日志(也是网上大多数博主的做法)。

具体命令如下:

这条命令可以查询2020.10.13号当天9点到9点十分中间的所有的日志信息。

但是这条命令的使用有两个前提(很多网上的博主都没有提到)

第一,日志输出的日期格式是要满足命令中的格式 ,如果不是的话就跟着实际的格式改

第二,输入的日期必须要真实存在!!! ,比如说9点整刚好没有日志输出,那么这条命令就会失效

更加通配的命令可以是这样, 使用 号*

这样无论九点整的时候是否有日志产生,就都可以获取到9点整到现在的所有日志了

使用 > ,将截取到的内容输出到指定的文件中,方便进一步查看

ps:在实际 *** 作中,我们一般会在后面加grep命令做进一步的关键字过滤

其实要说回答很简单,但是要给你做出来稍微费工夫,因为没有环境可以测试,你可以写一段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)

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”进行搜索日志。


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

原文地址:https://54852.com/yw/7451798.html

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

发表评论

登录后才能评论

评论列表(0条)

    保存