Как добавить сценарии pre-hook и post-hook, которые выполняются перед всеми моими заданиями cron? - PullRequest
2 голосов
/ 03 марта 2012

Предположим, у меня есть следующая запись cron:

* * * * * /bin/date

Теперь предположим, что мне нужны сценарии, которые выполняются как до, так и после выполнения задания cron.

Я мог бы изменить запись cron навыглядело это так:

* * * * * /bin/prehook ; /bin/date ; /bin/posthook

Или, если бы я хотел, чтобы код завершения предварительного крюка определял, выполняется ли команда date, я мог бы сделать это:

* * * * * /bin/prehook && /bin/date ; /bin/posthook

Однако яищу решение, которое я мог бы применить глобально ко всем заданиям cron без редактирования каждого отдельного crontab;Я считаю, что это аналогично хукам pre-commit и post-commit, которые вы видите во многих системах контроля версий.

Ответы [ 2 ]

0 голосов
/ 11 марта 2012

Система, которую я использую, состоит в том, что запись crontab всегда состоит из одного имени сценария, например:

3  1  *  *  *  /home/me/bin/Cron/daily

Сценарий в /home/me/bin/Cron/daily на самом деле является ссылкой на один сценарий runcron, который смотрит на то, что он называется (например, daily).Он устанавливает мою среду (поскольку cron не устанавливает больше, чем самая минимальная из минимальных сред), а затем запускает /home/me/bin/daily.Если (когда) мне нужно отладить cron или добавить пре-хуки или пост-хуки, я могу сделать это глобально (путем изменения /home/me/bin/Cron/runcron) или локально (сделав /home/me/bin/Cron/daily временно в измененную копию обычного runcron скрипт).Эта гибкость очень полезна в тех случаях, когда она мне нужна, и не предполагает каких-либо изменений в фактической записи crontab.

Мои сценарии передают аргументы, если они предоставляются.Однако я никогда не находил достаточных оснований для использования этой функциональности в долгосрочной перспективе.У меня есть записи для daily, weekday, weekly и monthly.(См. Также Где я могу установить переменные окружения, которые будет использовать crontab? )

0 голосов
/ 11 марта 2012

Я не думаю, что существует простое решение, использующее стандартную реализацию cron, такую ​​как Vixie cron без изменений.

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

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

...