Как обновить крон без запуска текстового редактора

Всем знают, что можно сделать так:

$ crontab -e

После выполнения команды запустится любимый nano/vi/mcedit, в котором можно отредактировать расписание, и после закрытия редактора файл расписания будет обновлен.

Но бывают ситуации, когда расписания нужно обновлять автоматически с помощью скриптов, например, в условиях continuous integration или проектов, в которых расписание задает пользователь.

Используем /etc/cron.d

Такие расписания можно раскладывать по файлам, для которых есть специальная папка:

$ ls /etc/cron.d
php

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

*/10 * * * * www-data /var/www/task/flush_cache.sh

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

cat /var/www/my_project/conf/crontab > /etc/cron.d/my_project

Важно помнить

Не забывайте, что в конце каждого кронтаба должна быть пустая строка, иначе расписание не запустится


Подпишитесь на Хайлоад с помощью Google аккаунта
или закройте эту хрень