Рейтинг:1

Есть ли способ поставить сценарии в очередь в ubuntu/debian/linux?

флаг ph

У меня странный вопрос (по крайней мере, для меня!), но я не знаю, как к нему подойти.

Задний план

У меня есть несколько пакетных заданий (скрипты python, вызываемые через скрипт cron или python, вызываемые скриптом bash). Например, 20 заданий ETL и 20 заданий обработки данных. Это происходит в разное время.

Текущий подход

Я держу свой сервер включенным и запускаю задания cron для запуска сценариев в назначенное время (они не все запускаются одновременно... один может запускаться в 13:00, а другой - в 17:00). Это работает отлично прямо сейчас

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

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

Я понятия не имею, как это сделать! Есть ли способ запланировать это в Ubuntu? Я думал о настройке внешней БД и наличии сценария, который запрашивает его, чтобы увидеть, какие процессы нужно запустить, но я чувствовал, что это излишество, я подозреваю, что это может быть распространенная проблема, которая имеет более простое решение.

Пожалуйста, дай мне знать!

user535733 avatar
флаг cn
Что вы подразумеваете под "*запуск сервера каждый час*"? Этот сервер на голом железе? Или это облачный экземпляр? Или контейнер или виртуальная машина на каком-то хосте?
Lostsoul avatar
флаг ph
@ user535733 В GCP вы можете запланировать запуск сервера в определенное время. Обычно я просто запускал сценарий при запуске, но при таком подходе мне пришлось бы иметь около 40 серверов с разными сценариями запуска.Я пытаюсь, чтобы один сервер выполнял разные действия в зависимости от очереди/временного окна.
pLumo avatar
флаг in
Вы можете использовать `@reboot` в качестве интервала cron. Затем проверьте в сценарии, что нужно сделать
Lostsoul avatar
флаг ph
@pLumo Прошу прощения, я не знаком с этой командой. Я искал это, но я нашел общий для перезагрузки моего сервера? Вы знаете, что я должен искать?
user535733 avatar
флаг cn
Для тех, кто не разбирается в облачных технологиях, GCP = Google Cloud. Это звучит как обычная задача для таймеров systemd или anacron, а не cron. И таймеры, и anacron предназначены для запуска, если система пропустила задание из-за бездействия. Вам не нужно запускать машину каждый час для пропущенных заданий. Вы можете запускать его один раз в день... или один раз в месяц. Запускайте его тогда, когда он вам действительно нужен, и пусть таймеры или анакрон справятся с логикой выяснения того, что было пропущено, какие задания выполнять и в каком порядке.
bac0n avatar
флаг cn
думаю, что вы ищете [OnUnitActiveSec =] (https://unix.stackexchange.com/questions/235102/systemd-timer-onunitactivesec-vs-oncalendar-for-anacron-replacement/235303#235303)
bac0n avatar
флаг cn
Связано: [Проблема таймера Unison и systemd] (https://askubuntu.com/q/656075/986805)
Lostsoul avatar
флаг ph
Вау, спасибо @user535733 и всем за помощь! Я посмотрел Anacron, и это похоже на то, что мне нужно. Если вы хотите дать ответ, я могу проголосовать/принять. Было трудно найти информацию об этом, когда я искал, поэтому я надеюсь, что это поможет другим решить эту подобную задачу. Спасибо!

Ответить или комментировать

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