linux - 自上次查看以来如何查看系统日志条目
问题描述
我想查看 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/syslog
newlinecount
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)后存档,并且此脚本不考虑存档过程。
推荐阅读
- wordpress - 如何在没有插件的 wordpress 代码编辑器中用 TinyMCE 替换 CodeMirror?
- node.js - 在 react js 项目中安装纱线时出错
- git - gitlab-ce docker - “PG::ConnectionBad:无法连接到服务器:没有这样的文件或目录”
- java - 线程“main”中的异常语法错误:找不到此模块。Java Alloy 程序未编译
- vb.net - 将图片框添加到 Windows 窗体
- node.js - 我正在尝试使用 multer 进行多个(视频和图像分别在单独的文件夹中)上传
- laravel - Laravel mix - 更改生产 CSS 输出选项
- node.js - 已解决:使用 Bot Framework SDK 4 向 MS 团队发送自适应卡时出现 onTurnError
- c# - App_Code 编译不会清理旧程序集
- java - 我正在尝试从 RFID 读取数据。但是类 RFIDEventListener 没有被调用。有人可以帮我吗?