我有一个脚本,它将在目录中找到的文件组合在一起并通过电子邮件发送它们。
尽管有时脚本由 CRON 触发,因此存在问题,因此它会启动,但仍有文件被添加到目录中。
在脚本开始时,我需要执行一个检查,以获取目录中的文件数并记住它,然后再次检查,例如 30 秒。
如果数字相同,那么它应该继续,或者如果最后一次检查大于第一次,那么脚本应该完全退出。
进行此类检查的最佳方法是什么?
我有一个脚本,它将在目录中找到的文件组合在一起并通过电子邮件发送它们。
尽管有时脚本由 CRON 触发,因此存在问题,因此它会启动,但仍有文件被添加到目录中。
在脚本开始时,我需要执行一个检查,以获取目录中的文件数并记住它,然后再次检查,例如 30 秒。
如果数字相同,那么它应该继续,或者如果最后一次检查大于第一次,那么脚本应该完全退出。
进行此类检查的最佳方法是什么?
另一种方法是让放置文件的进程在运行结束时创建一个特定命名的文件(例如all.done
),并且使用文件的进程在执行任何其他操作之前检查该特定文件,如果不存在则退出...
你的意思是这样吗?
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
您可以使用 while 循环每 30 秒检查一次文件数。例如:
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