用于检查在 x 分钟内没有创建文件的查找命令
Find command to check no files is created within x minutes
我有一个 NVR 系统,可以将视频监控记录到 linux 服务器中。这个NVR系统有时会停止录音(Bug),我想知道什么时候发生。
如果在过去的 60 分钟内没有创建任何文件,我正在考虑使用带有脚本和 cronjob 的 find 命令向我发送电子邮件。
我想到的命令是:
find /path/to/folder/* -name "*.ts" -mmin +0 -mmin -60 -exec echo "No New Recording Available" \; | mail -s "PP-NVR" me@server.com
但是此命令只向我发送 "No New Recording Available" 超过 60 分钟的文件列表
No New Recordinf Available
No New Recordinf Available
No New Recordinf Available
No New Recordinf Available
No New Recordinf Available
...
谁能帮忙!
编辑:这是我想出的脚本,但它似乎无法正常工作:
#!/bin/sh
if test 'find /path_to_folder/* -name "*.ts" -mmin +1 -mmin -10'
then
echo "No New Recording Available" | mail -s "PP-NVR" me@server.com
fi
你可以尝试结合这个
run a unix shell command if the output doesn't have a specific number of lines
与
vagrant@puppet ~]$ find . -name '*.ts' -mmin -1 | wc -l
0
[vagrant@puppet ~]$ touch blah.ts
[vagrant@puppet ~]$ find . -name '*.ts' -mmin -1 | wc -l
1
所以:
[vagrant@puppet ~]$ ./alert.sh
No new files
[vagrant@puppet ~]$ echo >> blah.ts
[vagrant@puppet ~]$ ./alert.sh
[vagrant@puppet ~]$ cat alert.sh
#!/bin/sh
newfiles=$(find . -name '*.ts' -mmin -1 | wc -l)
if [[ $newfiles -eq 0 ]] ; then
echo "No new files"
fi
[vagrant@puppet ~]$
我没有使用 find 的解决方案,但您可以使用 inotifywait(在 inotify-tools 中)设置观察者,如下所示:
inotifywait -r -e modify -t 60 /path/to/folder
并检查 $?对于值 2,这意味着它在 60 秒 (-t 60) 后超时,而 /path/to/folder 及其子文件夹 (-r) 中的文件没有被修改 (-e 修改)。
我有一个 NVR 系统,可以将视频监控记录到 linux 服务器中。这个NVR系统有时会停止录音(Bug),我想知道什么时候发生。
如果在过去的 60 分钟内没有创建任何文件,我正在考虑使用带有脚本和 cronjob 的 find 命令向我发送电子邮件。
我想到的命令是:
find /path/to/folder/* -name "*.ts" -mmin +0 -mmin -60 -exec echo "No New Recording Available" \; | mail -s "PP-NVR" me@server.com
但是此命令只向我发送 "No New Recording Available" 超过 60 分钟的文件列表
No New Recordinf Available
No New Recordinf Available
No New Recordinf Available
No New Recordinf Available
No New Recordinf Available
...
谁能帮忙!
编辑:这是我想出的脚本,但它似乎无法正常工作:
#!/bin/sh
if test 'find /path_to_folder/* -name "*.ts" -mmin +1 -mmin -10'
then
echo "No New Recording Available" | mail -s "PP-NVR" me@server.com
fi
你可以尝试结合这个 run a unix shell command if the output doesn't have a specific number of lines
与
vagrant@puppet ~]$ find . -name '*.ts' -mmin -1 | wc -l
0
[vagrant@puppet ~]$ touch blah.ts
[vagrant@puppet ~]$ find . -name '*.ts' -mmin -1 | wc -l
1
所以:
[vagrant@puppet ~]$ ./alert.sh
No new files
[vagrant@puppet ~]$ echo >> blah.ts
[vagrant@puppet ~]$ ./alert.sh
[vagrant@puppet ~]$ cat alert.sh
#!/bin/sh
newfiles=$(find . -name '*.ts' -mmin -1 | wc -l)
if [[ $newfiles -eq 0 ]] ; then
echo "No new files"
fi
[vagrant@puppet ~]$
我没有使用 find 的解决方案,但您可以使用 inotifywait(在 inotify-tools 中)设置观察者,如下所示:
inotifywait -r -e modify -t 60 /path/to/folder
并检查 $?对于值 2,这意味着它在 60 秒 (-t 60) 后超时,而 /path/to/folder 及其子文件夹 (-r) 中的文件没有被修改 (-e 修改)。