BASH检查目录并继续或等待

时间:2013-10-18 16:16:53

标签: bash

我有一个脚本将目录中的文件组合在一起并通过电子邮件发送给他们。

但是有一个问题,因为有时脚本是由CRON触发的,因此它会启动,但仍有文件被添加到目录中。

在脚本开始时,我需要实现一个检查,该检查会获取目录中的文件数,然后再次检查,例如30秒。

如果数字相同则应该继续,或者如果最后一次检查大于第一次检查,那么脚本应该完全退出。

进行此类检查的最佳方式是什么?

3 个答案:

答案 0 :(得分:1)

你的意思是这样吗?

NFILES1=`find . -type f | wc -l`
sleep 30
NFILES2=`find . -type f | wc -l`
if [ $NFILES1 -ne $NFILES2 ]; then
    echo "The file-creator is still going, apparently; exiting."
    exit
fi
# carry on

答案 1 :(得分:1)

您可以使用while循环每30秒检查一次文件数。 e.g:

a=-1
b=-2
while ((a!=b))
do 
    b=a
    a=$(find yourfolder -maxdepth 1 -mindepth 1 -type f -printf "a" | wc -c)
    sleep 30
done

答案 2 :(得分:1)

另一种方法是让进程放置文件在运行结束时创建一个特定命名的文件(例如all.done),并且在执行任何操作之前使用文件的进程会检查该特定文件否则,如果它不存在则退出...