gpt4 book ai didi

linux - 在 2 个 cron 任务之间处理 "race-condition"。什么是最好的方法?

转载 作者:塔克拉玛干 更新时间:2023-11-03 00:23:05 24 4
gpt4 key购买 nike

我有一个定期运行的 cron 任务。此任务取决于有效条件才能完成其处理。如果重要的话,这个条件只是数据库中特定记录的 SELECT。如果不满足条件(即 SELECT 未返回预期的结果集),则脚本立即退出。
这很糟糕,因为条件很快就会有效(不知道多久但由于另一个脚本的运行它会有效)。
所以我想以某种方式使脚本更健壮。我想到了 2 个解决方案:

  1. 放置一个 while 循环并不断地 sleep 直到条件满足有效的。这应该可行,但它的缺点是一旦脚本在循环中,它是失控的。所以我想另外醒来后检查是否存在特定文件。如果它做到了“理解”用户想要“强制”停止它。
  2. 一旦脚本发现条件无效它在 crontab 中附加一个脚本并停止。那秒脚本不断轮询条件以及条件是否有效然后重新启动第一个脚本以重新启动其处理。这个解决方案对我来说似乎可行,但我不确定它是否是一个好的解决方案。例如。也许以编程方式修改 crontab 是个坏主意?

无论如何,我认为也许这个问题很常见并且可以有一个标准的解决方案,比我提出的 2 个要好得多。有人有更好的建议吗?我的想法中哪个最好?我对 cron 任务不是很有经验,所以我可能会监督一些事情/问题。

最佳答案

与其以编程方式附加 crontab,不如考虑使用 at安排作业在将来的某个时间再次运行。如果脚本确定它现在不能完成它的工作,它可以简单地安排自己在几分钟(或几个小时,因为它可能)之后通过 at 再次运行。命令。

关于linux - 在 2 个 cron 任务之间处理 "race-condition"。什么是最好的方法?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18132144/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com