Настройка cron

Для запуска скриптов по расписанию необходимо отредактировать файл /etc/crontab. Параметры задачи разделяются пробелом и имеют следующую последовательность:

  • Минута (0 - 59)
  • Час (0 - 23)
  • День месяца (1 - 31)
  • Месяц (1 - 12 или jan,feb,mar,apr...)
  • День недели (0 - 6, где воскрксенье = 0, или sun,mon,tue,wed,thu,fri,sat)
  • Имя пользователя
  • Команда

Задачи из крона запускаются не чаще раза в минуту. Указание времени по сути имеет вид фильтра - как только текущее время под него попадает, то задача запускается.

  • Если указать *, то это будет соответствовать любому значению.
  • Если указать конкретное число/название - то задача будет запускаться когда это число будет совпадать с текущим. Например 10 20 * * * будет запускаться раз в день в 20:10.
  • Также можно указать диапазон через дефис. Например, 0-10 * * * * будет запускаться каждую минуту в началае часа 10 раз.
  • Также можно перечислить время, разделив его запятой: 0,1,2,3,4,5 * * * *.
  • Также можно указать интервал, разделив * на число. Если текущее время будет делиться без остатка, то задача запустится. Например */10 * * * * будет запускаться каждые 10 минут (в 00, 10, 20, 30...).

Для записи логов выполнения в файл дописываем в конце команды следующее: > /tmp/cron.log 2>&1, что значит что поток ошибок (stderr) будет перенаправлен в поток вывода (stdout), который в свою очередь запишется в файл /tmp/cron.log. Для дозаписи ">" заменяем на ">>".

Итак, чтобы запускать команду Symfony раз в сутки в 23:00 и логировать ее выполнение, пишем следующее:

0 23 * * * nginx /var/www/project/bin/console cache:clear >> /var/www/project/var/logs/cron.log 2>&1