Find 命令仅检查最后 10 分钟而不是整个文件夹

Find 命令仅检查最后 10 分钟而不是整个文件夹

我有一个 nvr 系统,可以将视频监控记录到文件服务器(Debian)中。我制作了一个 Nagios 插件来检查 NVR 系统是否正确录制,并在停止录制时向我发送通知。问题是我正在使用 find 命令:

find /srv/unifi-video/videos/ -name '*.ts' -mmin -10 | wc -l

由于 Nagios 正在检查 400 Gb 以上的文件,因此它会不断超时并发送“NRPE 套接字超时”消息。

是否可以使 find 命令仅搜索过去 10 分钟内创建的文件,而不仅仅是整个文件夹?

答案1

您的代码看起来已经正确,-mmin -10将结果范围缩小到“不到 10 分钟前修改”。如果您的 video/ 还包含其他项目(例如子目录),您可以通过忽略目录并仅关注文件来节省一些时间,添加-type f

find /srv/unifi-video/videos/ -type f -name '*.ts' -mmin -10 | wc -l

如果您对 nvr 系统保存文件的方式有更好的控制,也许可以尝试使其仅将 *.ts 文件保存在专用目录(例如 video/ts)中,因此 find 只需要处理 ts 文件而无需处理其他文件。

其他想法

希望您已经尝试查看 nvr 系统的文档,看看是否有一些日志记录功能只需要启用。我之所以提到日志记录是因为,与find用于检查文件系统记录的脚本相比,如果您只需编写一个脚本来读取日志,那么获取状态信息会更快。

答案2

我会首先找到使用的最新目录,然后仅检查该目录:

find $(ls -rt /srv/unifi-video/videos/* | tail -1) -type f -name '*.ts' -mmin -10 | wc -l

相关内容