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”是什么如果脚本意外退出,命令是否会作出反应?努力避免这种情况,但有时会由于服务器负载或读取意外的数据格式而发生。提前谢谢<代码>等待正在等待所有子流程的完成。。。完成可能是意外的