自上次查看以来如何查看系统日志条目

马克

我想查看 Linux /var/log/syslog 中的条目,但我只想查看自上次查看以来的条目(最好创建一个 bash 脚本来执行此操作)。我想到的解决方案是获取 syslog 的副本并将其与我上次获取副本时进行比较,但这似乎不干净,因为 syslog 可能很大并且 diff 在其输出中添加了工件。我想也许会以某种方式直接在 syslog 上使用 tail,但是当我不知道自上次尝试以来添加了多少行时,我不知道该怎么做。有什么更好的想法吗?我希望能够将结果重定向到一个文件,以便我以后可以交互式 grep 查找感兴趣的特定部分。

杰万德

Linux 有一个wc命令可以计算文件中的行数,例如
wc -l /var/log/syslog. 下面的 bash 脚本将wc -l命令的输出存储在一个名为./prevlinecount. 每当你想只是在一个文件中的新线将其获取的价值./prevlinecount,并减去一个新的实例此值wc -l /var/log/syslognewlinecount然后,它tailš (newlinecount - prevlinecount)

#!/bin/bash
prevlinecount=`cat ./prevlinecount`
if [ -z $prevlinecount ]; then
        echo `wc -l $1 | awk '{ print $1 }' > ./prevlinecount`
        tail -n +1 $1
else
        newlinecount=`wc -l $1 | awk '{print $1}'`
        tail -n `expr $newlinecount - $prevlinecount` $1
        echo $newlinecount > ./prevlinecount
fi

请注意,这是一个非常简陋的脚本,它只能跟踪一个文件。如果您想将此脚本扩展到多个文件,请查看关联数组使用关联数组,您可以通过将key用作文件名并value作为前一行计数来跟踪多个文件还要
注意,随着时间的推移,syslog文件可以在文件达到预定大小(可能是 10MB)后存档,并且此脚本不考虑存档过程。

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章