Мы используем cron для управления нашими резервными копиями и другими заданиями в нескольких местах. Использование chef для заполнения файлов в cron.daily, cron.hourly и т. Д. Пока работало для нас очень хорошо, но с некоторыми проблемами:
Оптимально, я бы хотел иметь веб-интерфейс, который я мог бы использовать для просмотра этой информации, либо в качестве расширения для cron, либо в качестве полной замены.
Я могу решить вышеуказанные проблемы самостоятельно, написав немного скриптов, но я уверен, что это проблема, которую другие уже решили.
Обратите внимание, что я осознаю, что это совершенно отдельная проблема от проверки резервных копий после того, как они были завершены.
Возможно, это не совсем подходит для того, что вам нужно, но в последнее время мой подход к этому заключался в сочетании двух драгоценных камней Ruby и веб-службы.
Во-первых, самоцвет когда бы ни, который дает вам чистый рубиновый интерфейс для планирования заданий cron (то есть не замену cron, а просто слой поверх).
Далее идет резервное копирование gem, который предоставляет солидный набор инструментов для аккуратного управления резервными копиями (в том числе в облачные хранилища). Резервное копирование также отправит вам электронное письмо, когда задачи завершатся неудачно и / или успешно (это зависит от вас).
Последний кусок пазла SendGrid - и хотя они продвигают свои платные планы, у них есть бесплатный план, который позволяет отправлять 200 электронных писем в день. Я, конечно, не собираюсь облагать налогом их серверы за этот скрипт, так что меня он вполне устраивает. Подтверждение учетной записи может занять несколько часов, но после ее настройки у меня не возникло проблем.
Рад поделиться некоторыми примерами сценариев, если хотите.
Ты можешь использовать Спасать - со встроенным веб-интерфейсом - для управления заданиями. Посмотрите Resque Railscast, чтобы увидеть его в действии.
Тогда используйте рубиновый камень resque-scheduler
для добавления заданий в очереди в запланированное время.
Об этом есть хорошая запись в блоге: «Задачи Cron для вашего приложения Rails с Resque»
Похоже, то, что вы хотите, не является cron
замена, а скорее резервная система (как Bacula).
Смотрите мои ответы на ваши индивидуальные вопросы ниже.
Я не хочу управлять почтовым сервером в системе только для того, чтобы получать вывод cron
Вам не нужно с cron
. Как указывали другие, вы можете запустить SSMTP или экземпляр sendmail только для отправки (просто обработчик очереди).
В качестве альтернативы вы можете перенаправить вывод cron в файл или системный журнал или передать его любой другой программе, которую вы хотите обработать.
Я хочу иметь возможность размещать выходные данные в моих заданиях cron, не получая о них электронной почты, если ничего не пошло не так
Согласно вышесказанному, вы можете направить свой вывод cron в программу-обработчик, регистратор и т. Д. - Вам НЕ ОБЯЗАТЕЛЬНО получать почту cron, это просто способ, которым он настроен по умолчанию ...
Я не хочу проверять / var / log / messages, чтобы узнать, не завершились ли задания без вывода
Это зависит от того, как работает ваше программное обеспечение для резервного копирования (и насколько оно поддается созданию записей журнала или анализируемого вывода, чтобы вы могли пропустить его через сценарий и отправлять сообщения по мере необходимости.
«Настоящая» система резервного копирования предоставит вам эту информацию через свои инструменты консоли / мониторинга и даже может отправить вам электронное письмо, если ей потребуется внимание во время работы.
Я не хочу, чтобы мне приходилось входить в систему, чтобы обнаружить, что задание резервного копирования все еще выполняется
Опять же, это больше зависит от вашего программного обеспечения для резервного копирования. Bacula и другие специализированные программы резервного копирования позволяют отслеживать состояние агентов на каждой клиентской машине с центральной консоли, поэтому вам не нужно входить в систему отдельных клиентов, чтобы проверить их состояние.
У Bacula есть веб-интерфейс, хотя я не могу за него поручиться: я использую консольную программу командной строки.
Ничто из этого действительно не помогает с вашими «другими заданиями» (как вы отметили, их вывод можно обработать с помощью моих заметок из первых двух пунктов плюс «немного скриптов»), но с использованием стандартного, хорошо известного программного обеспечения например, cron упростит обслуживание в долгосрочной перспективе.
Вы можете попробовать структурированный планировщик заданий для управления задачами в вашей системе. Что-то вроде Планировщик заданий с открытым исходным кодом подойдет для этого. Преимущество состоит в том, что у вас будет центральная консоль для управления вещами, метод для обработки проверки зависимостей и правильный способ повторного запуска или правильного запуска заданий в случае пропущенного окна задания.