CRON JOB在复制文件期间运行

时间:2014-09-26 12:08:37

标签: linux bash unix cron jobs

我有一个每2分钟运行一次的脚本,查看文件夹并检查是否已传送新文件 问题是,有时脚本会在复制文件期间启动(文件非常大),因此会向客户发送一封电子邮件,其中"文件x为空"但当然文件很好。之后会收到正确的留言电邮。

为了避免不同处理之间的重叠,我已经设置了这样的CRON_RUN文件。如果有正在处理的文件,则我的脚本退出。当程序完成时,CRON_RUN文件被删除,以便当然存在时允许启动下一个进程

现在处理不再重叠,但我观察到了 如果我在输入中传递文件,并且在复制过程中我开始处理,程序会识别一个EMPTY文件,因此它仍然不是预期的。

是否有像?:

这样的命令
   if copy process is in run or checksum file is not completed then
   exit
   else 
   do my program
   fi
目前我目前的实施是:

#!/bin/bash

   MYDIR=`dirname $0`
   ext_dir="/server/oracle/apps/delivery"

   if test -f $ext_dir/CRON_RUN
   then
      echo $0 CRON RUN >&2
      exit 1
   fi

   touch $ext_dir/CRON_RUN
   export CRON_RUN=CRON_RUN

for......
my program....

   export CRON_RUN=""
   rm -f $ext_dir/CRON_RUN
如果我正确理解如何使用flock命令,请告诉我吗?

#!/bin/bash

   MYDIR=`dirname $0`
   ext_dir="/server/oracle/apps/delivery"

   if test -f $ext_dir/CRON_RUN
   then
      echo $0 CRON RUN >&2
      exit 1
   fi

   touch $ext_dir/CRON_RUN
   export CRON_RUN=CRON_RUN

#running the program for each input folder
#inside the input some files might be in copying
#if a process copying is in progress program should exit
# if not then the load-input script should start

for input_folder in electro food comp rof 
do

(
# Wait for lock on /server/oracle/apps/delivery/$input_folder/.load-input.exclusivelock(fd 200) for 10 seconds
flock -x -w 10 200 || exit 1

# Do stuff

$MYDIR/load-input $input_folder  $mylog > $mylog 2>&1

) 200>/server/oracle/apps/delivery/$input_folder/.load-input.exclusivelock
  done
export CRON_RUN=""
rm -f $ext_dir/CRON_RUN

0 个答案:

没有答案