用于检查文件是否正在创建的Bash脚本

时间:2014-11-10 23:37:41

标签: bash ubuntu

我们有一个Amazon EC2实例,我们从安全摄像头上传输出。时不时,相机出现问题,停止上传,需要重新启动。我们确定这一点的简单方法是查看是否未创建文件。问题是它创建了大量的文件。如果我使用find和-ctime,这个脚本运行需要很长时间。是否有更快的方法来检查自昨天以来是否已创建文件?我只需要捕获结果(是的,有一些文件,或者没有,但是没有),并通过电子邮件发送消息,但是如果有一些事情没有花费半小时的时间来运行,那就太好了。

 #!/bin/bash

 find /vol/security_ftp/West -ctime -1
 find /vol/security_ftp/BackEntrance -ctime -1
 find /vol/security_ftp/BoardroomDoor -ctime -1
 find /vol/security_ftp/MainEntrance -ctime -1
 find /vol/security_ftp/North -ctime -1
 find /vol/security_ftp/South -ctime -1

2 个答案:

答案 0 :(得分:1)

简单(和推荐的man find)解决方案是:

find /vol/security_ftp/ -mtime 0

查找过去24小时内修改过的/vol/security_ftp个文件。试一试,看看它是否符合您的时间要求。如果默认设置不够快,我们可以寻找另一种解决方案。如果延迟是由/vol/security_ftp下的众多子目录引起的,则使用以下内容限制深度和类型:

find /vol/security_ftp/ -maxdepth 1 -type f -mtime 0

答案 1 :(得分:1)

使用find是一种自然的解决方案,但是如果你真的必须避免它,你可以使用ls在目录中查看最新文件,并根据ctime对输出进行排序,例如。

ls /vol/security_ftp/West -clt | head --lines=1

如果您想查看日期,这就足够了 如果您需要更好的格式化输出(或只需要ctime来进一步处理),您可以将文件名提供给stat

stat --format="%z" $( ls /vol/security_ftp/West -ct | head --lines=1 )

但是,如果最近创建了任何文件,则不会自动应答。