Что альтернативы там к крону для выполнения запланированных заданий?

Я на самом деле решил использование задач tail и вопрос о Переполнении стека Конечный хвост-f запустился в сценарии оболочки.

# Solution
($(command) > ${FILE}) &
tail -f --pid=$! ${FILE} | while read line
do
      echo $line
      # Can parse each line output here
      # Example: send errors to log file
      if echo $line | grep -qi "error"
      then
            echo $line >> ${LOG}
      fi
done

Спасибо всем за справку.

3
задан 30 August 2011 в 02:52
4 ответа

Вы можете использовать Resque - со встроенным веб-интерфейсом - для управления заданиями. Посмотрите Resque Railscast, чтобы увидеть его в действии.

Затем используйте ruby ​​gem resque-scheduler , чтобы добавлять задания в очереди в запланированное время.

Об этом есть хорошая запись в блоге: «Задачи Cron для вашего приложения Rails с Resque»

1
ответ дан 3 December 2019 в 06:44

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

Во-первых, драгоценный камень каждый раз , который дает вам чистый рубиновый интерфейс для планирования заданий cron (то есть не замену cron, а просто верхний слой).

Далее идет резервная копия gem, который предоставляет солидный набор инструментов для аккуратного управления резервными копиями (в том числе в облачные хранилища). Резервное копирование также отправит вам электронное письмо, когда задачи завершатся неудачно и / или будут выполнены успешно (это зависит от вас).

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

Если хотите, с удовольствием поделимся некоторыми примерами сценариев.

1
ответ дан 3 December 2019 в 06:44

Вы можете попробовать структурированный планировщик заданий для управления задачами в ваших системах. Что-то вроде Планировщика заданий с открытым исходным кодом подойдет для этого. Преимущество состоит в том, что у вас будет центральная консоль для управления вещами, метод для обработки проверки зависимостей и правильный способ перезапуска или запуска заданий должным образом в случае пропущенного окна задания.

0
ответ дан 3 December 2019 в 06:44

Похоже, вы хотите не замену cron , а скорее резервную копию система ( как Bacula ).
См. Мои ответы на ваши вопросы ниже.

Я не хочу, чтобы мне приходилось управлять почтовым сервером в системе только для того, чтобы получать выходные данные cron

Вам не нужно использовать cron . Как отмечали другие, вы можете запустить SSMTP или экземпляр sendmail только для отправки (просто обработчик очереди).
В качестве альтернативы вы можете перенаправить свой вывод cron в файл или системный журнал или передать его любой другой программе, с которой вы хотите его обработать.

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

Согласно вышеизложенному, вы можете передать свой вывод cron программе-обработчику, регистратору и т.д. не хочу проверять / var / log / messages, чтобы увидеть, не удалось ли выполнить задание без вывода

Это зависит от того, как работает ваше программное обеспечение резервного копирования (и насколько оно поддается созданию записей журнала или анализируемого вывода, чтобы вы могли его кормить с помощью сценария и при необходимости отправляйте сообщения.
«Настоящая» система резервного копирования предоставит вам эту информацию через свою консоль / инструменты мониторинга и даже может отправить вам электронное письмо, если она требует внимания во время работы.

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

Опять же, это больше зависит от вашего программного обеспечения резервного копирования. Bacula и другие специализированные программы резервного копирования позволяют отслеживать состояние агентов на каждой клиентской машине с центральной консоли, поэтому вам не нужно входить в систему отдельных клиентов, чтобы проверить их состояние.
У Bacula есть веб-интерфейс, хотя я не могу за него поручиться: я использую консольную программу из командной строки.


Ничего из этого не помогает с вашими «другими задачами» (как вы отметили, их результат может быть обрабатывались с моими примечаниями из первых двух пунктов плюс «немного скриптов»), но использование стандартного, хорошо известного программного обеспечения, такого как cron, в долгосрочной перспективе упростит обслуживание.

1
ответ дан 3 December 2019 в 06:44

Теги

Похожие вопросы