gpt4 book ai didi

mysql - 确保脚本执行或在计划错过时踢掉它

转载 作者:行者123 更新时间:2023-11-29 17:24:49 24 4
gpt4 key购买 nike

操作系统:Ubuntu

当前场景:我有一个 bash 脚本,计划每天中午 12 点运行,每天仅运行一次。它从 mysql 表中获取帐户到期日为今天日期的用户列表,并在各种 mysql 表中禁用它们,并发送电子邮件警报。

问题:有时,由于服务器关闭或中午 12 点重新启动,脚本会错过其计划。

因此,我正在寻找一些逻辑/方法,脚本应该每小时运行一次,并且应该检查以下内容

如果今天中午 12 点已成功执行,则不要重新运行,如果它没有被执行,那么它应该在下次运行时执行脚本并且不要在该日期再次重新运行

最佳答案

您需要保留上次成功运行的状态。我认为你可以通过两种方式实现:

  • 在 mysql 中创建一个新表来存储此信息并存储脚本成功运行时的最后一个日期时间。每 1 小时脚本就会醒来并查看此时间戳以执行任何待处理的操作。

  • 您还可以将此信息存储在某些系统文件夹中,例如“/var/log/”或您的应用程序有权访问的文件夹中,并且您需要确保此文件不会在重新启动后被删除。

将此逻辑放在文件的开头:

last_time_run = <fetch_from_db or persistant file>
current_time = <get_current_time>

if <already executed>; then
don't do anything and exit.
else
processed and do normal actions.
fi


# End of the script
Update the timestamp in table or db to indicate that for current day the processing is finished.

关于mysql - 确保脚本执行或在计划错过时踢掉它,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51022970/

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