确保脚本执行或踢它如果计划错过

pu3pd22g  于 2021-06-24  发布在  Mysql
关注(0)|答案(1)|浏览(294)

操作系统:ubuntu
当前场景:我有一个bash脚本,计划每天中午12点运行,每天只运行一次。它从mysql表中获取帐户到期日为今天的用户列表,并在不同的mysql表中禁用它们,同时发送电子邮件警报。
问题:有时脚本会由于服务器关闭或在中午12点重新启动而错过其计划。
因此,我正在寻找一些逻辑/方法,脚本应该每小时运行一次,并且应该检查以下内容
如果它已经在今天中午12点成功执行了,那么不要重新运行,如果它没有执行,那么它应该在下一次运行时执行脚本&不要在该日期再次重新运行

mxg2im7a

mxg2im7a1#

您需要保持上次成功运行的状态。我认为你可以通过两种方式实现:
在mysql中创建一个新表来存储此信息并存储最后一个 datetime 当脚本成功运行时。每个1hr脚本都会唤醒并查看此时间戳以执行任何挂起的操作。
您还可以将此信息存储在某些系统文件夹中,如“/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.

相关问题