Настройка 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