Обеспечить выполнение скрипта или сбросить его, если пропущено расписание

0

ОС: Ubuntu

Текущий сценарий: у меня есть сценарий bash, который планируется запустить ежедневно 12 вечера, только один раз в день. Он извлекает списки пользователей из таблицы mysql, чьи учетные записи истекают. Дата date и отключает их в разных таблицах mysql, а также отправляет оповещения по электронной почте.

Проблема: Иногда случается, что сценарий пропускает свое расписание либо из-за отказа сервера, либо перезагружается в 12 часов.

Поэтому я ищу некоторую логику/метод, который скрипт должен запускать каждый час, и он должен проверять следующее

Если он был выполнен сегодня успешно уже в 12 часов, то не RE-RUN, если он не был выполнен, тогда он должен выполнить скрипт при следующем запуске и повторно запустить за эту дату снова

Теги:

1 ответ

0

Вам нужно сохранить состояние последнего успешного запуска. Я думаю, вы можете достичь двумя способами:

  • Создайте новую таблицу в mysql, чтобы сохранить эту информацию и сохранить последнее datetime при успешном datetime скрипта. Каждый 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. 
  • 0
    Я сделал такой стол. id - script_name - lastupdate 2 - myscript - 2018-06-25 15:48:25 при каждом запуске скрипта его обновление выше таблицы. Я хочу убедиться, что скрипт запускается только 1 раз в день в 12 часов, и если он пропустит расписание, то снова запустите
  • 0
    Я заблудился в логике, скрипт должен запускать код только один раз в день только в 12 часов, но если он пропустит расписание, он должен запустить код и не должен запускать код снова для той же даты.
Показать ещё 4 комментария

Ещё вопросы

Сообщество Overcoder
Наверх
Меню