我有一个定期运行的 cron 任务。该任务依赖于一个有效的条件才能完成其处理。万一它很重要,这个条件只是数据库中特定记录的 SELECT 。如果不满足条件(即 SELECT 未返回预期的结果集),则脚本立即退出。
这很糟糕,因为条件很快就会生效(不知道多久,但由于另一个脚本的运行,它将生效)。
所以我想以某种方式使脚本更健壮。我想到了2个解决方案:
- 不断
while
循环,sleep
直到条件有效。这应该可行,但它的缺点是一旦脚本进入循环,它就会失控。所以我想另外在醒来后检查是否存在特定文件。如果它“理解”用户想要“强制”停止它。 - 一旦脚本发现条件无效,它就会在 crontab 中附加一个脚本并停止。该秒脚本不断轮询条件,如果条件有效,则重新启动第一个脚本以重新开始其处理。这个解决方案对我来说似乎有效,但我不确定它是否是一个好的解决方案。例如,也许以编程方式修改 crontab 是个坏主意?
无论如何,我认为也许这个问题很常见并且可以有一个标准的解决方案,比我想出的 2 好得多。有人有更好的提议吗?我的想法中哪个最好?我对 cron 任务不是很有经验,所以我可能会监督一些事情/问题。