Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/python-3.x/19.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

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/bash/16.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
Python 3.x 一个接一个地执行程序的cron作业?_Python 3.x_Bash_Shell_Parallel Processing_Cron - Fatal编程技术网

Python 3.x 一个接一个地执行程序的cron作业?

Python 3.x 一个接一个地执行程序的cron作业?,python-3.x,bash,shell,parallel-processing,cron,Python 3.x,Bash,Shell,Parallel Processing,Cron,有六个脚本,我希望使用以下逻辑每天执行一次: s11、s12可以并行启动和运行 s21、s22应仅在s11和s12完成后启动。两者都可以并行运行 s31、s32应仅在s21和s22完成后启动。两者都可以并行运行 到目前为止,我是通过启动cron的每日masterscript m来实现的。 m启动了所有六个脚本s11-s32、s11和s12,它们直接执行任务,但其他脚本每分钟都会查看计数器文件,只有当计数器具有正确的值时,它们才启动真正的任务。每个脚本在关闭前都更改了计数器,这是向下一代脚本的移

有六个脚本,我希望使用以下逻辑每天执行一次:
s11、s12可以并行启动和运行
s21、s22应仅在s11和s12完成后启动。两者都可以并行运行
s31、s32应仅在s21和s22完成后启动。两者都可以并行运行

到目前为止,我是通过启动cron的每日masterscript m来实现的。 m启动了所有六个脚本s11-s32、s11和s12,它们直接执行任务,但其他脚本每分钟都会查看计数器文件,只有当计数器具有正确的值时,它们才启动真正的任务。每个脚本在关闭前都更改了计数器,这是向下一代脚本的移交。 但由于其他原因,我的服务器太忙,新的cron在昨天的脚本完成之前启动了m,我把数据搞砸了

我想其他人也有类似的问题,知道一个小程序库或其他任何东西来正确和稳定地完成这项工作,可以肯定的是,新系列不应该在旧系列完成之前开始


提前感谢您的任何提示

作为bash中主脚本的一个示例,我使用
wait
等待
在后台以
&

本例假设: 您的所有脚本都是文件夹
/home/me/myproject/
您有一个
logs
文件夹,希望在其中捕获一些输出

#!/bin/bash

cd /home/me/myproject/   

bin/s11 > logs/s11_stdout.log 2>logs/s11_stderr.log   &
bin/s12 > logs/s12_stdout.log 2>logs/s12_stderr.log   &
wait


./s21 &
./s22 &
wait

s31 &
s32 &
wait

作为bash中主脚本的一个示例,我使用
wait
等待
在后台以
&

本例假设: 您的所有脚本都是文件夹
/home/me/myproject/
您有一个
logs
文件夹,希望在其中捕获一些输出

#!/bin/bash

cd /home/me/myproject/   

bin/s11 > logs/s11_stdout.log 2>logs/s11_stderr.log   &
bin/s12 > logs/s12_stdout.log 2>logs/s12_stderr.log   &
wait


./s21 &
./s22 &
wait

s31 &
s32 &
wait

谢谢,这真的很有帮助!我想把它放在一个循环中,这样守护进程就可以永久运行了。如果它停止了,我考虑一个解决方案,如这里所述,cronjob控制脚本是否正在运行,如果不是电子邮件或重启…:最后一次等待似乎没有用。添加
echo“$(日期):6个作业已完成”>>日志/result.log
当您想要显示代码将在最后一次
wait
之后执行时。最后一次
wait
不是无用的,当我运行主脚本时,当它将完成时,我确信所有子脚本都已执行并完成“wait”是什么如果脚本意外退出,命令是否会作出反应?努力避免这种情况,但有时会由于服务器负载或读取意外的数据格式而发生。提前谢谢<代码>等待正在等待所有子流程的完成。。。完成可能是出乎意料的,谢谢,这真的很有帮助!我想把它放在一个循环中,这样守护进程就可以永久运行了。如果它停止了,我考虑一个解决方案,如这里所述,cronjob控制脚本是否正在运行,如果不是电子邮件或重启…:最后一次等待似乎没有用。添加
echo“$(日期):6个作业已完成”>>日志/result.log
当您想要显示代码将在最后一次
wait
之后执行时。最后一次
wait
不是无用的,当我运行主脚本时,当它将完成时,我确信所有子脚本都已执行并完成“wait”是什么如果脚本意外退出,命令是否会作出反应?努力避免这种情况,但有时会由于服务器负载或读取意外的数据格式而发生。提前谢谢<代码>等待正在等待所有子流程的完成。。。完成可能是意外的