Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/shell/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Shell 如何将Cronjob与其运行的文件同步,这需要5分钟以上的时间才能完成,但我每3分钟设置一次Cronjob_Shell_Unix_Cron - Fatal编程技术网

Shell 如何将Cronjob与其运行的文件同步,这需要5分钟以上的时间才能完成,但我每3分钟设置一次Cronjob

Shell 如何将Cronjob与其运行的文件同步,这需要5分钟以上的时间才能完成,但我每3分钟设置一次Cronjob,shell,unix,cron,Shell,Unix,Cron,我在代码中使用的脚本存在问题,我的cronjob每5分钟运行一次,但它运行的脚本需要更多的时间,我希望我的cronjob等待这些文件完成处理,然后在最早的时间间隔内执行。是否可能 请看下面的例子。请给我一个解决方案。蒂亚 我正在运行cronjob,例如: */5 * * * * /home/Sti/New_Int/fetch_My_Data.sh 此作业将调用下面的脚本以及关于每个脚本正在执行的操作的一些详细信息 fetch_Some_Data.sh-->此脚本只是将几个文件从一个位置移动到另

我在代码中使用的脚本存在问题,我的cronjob每5分钟运行一次,但它运行的脚本需要更多的时间,我希望我的cronjob等待这些文件完成处理,然后在最早的时间间隔内执行。是否可能

请看下面的例子。请给我一个解决方案。蒂亚

我正在运行cronjob,例如:

*/5 * * * * /home/Sti/New_Int/fetch_My_Data.sh
此作业将调用下面的脚本以及关于每个脚本正在执行的操作的一些详细信息

  • fetch_Some_Data.sh-->此脚本只是将几个文件从一个位置移动到另一个位置,以便只处理所需的文件
  • tran.sh-->此脚本打开一个for循环,对于每个文件,它将通过调用post.sh脚本打开一个DB连接,对于处理它,睡眠时间为60秒
  • post.sh-->这是一个脚本,用于为第2点中正在处理的每个文件创建数据库连接并终止它

  • 因此,您能否为我提供一个解决方案,以便如果在第2点中没有处理文件,cronjob将不会运行,直到那时

    在这种情况下,我通常使用一个临时文件来指示正在运行的实例,并且在该文件存在之前,所有其他实例都将退出或出错。
    在执行任何其他操作之前,请将此逻辑添加到shell脚本:
    如果存在文件
    然后
    退出
    如果
    否则
    触摸空文件

    end else

    其他选项是在父代码中创建后台进程,然后退出,而不是cron。您也可以在呼叫和退出之前添加等待5分钟。