Cron — планировщик задач в UNIX-подобных операционных системах, использующийся для периодического выполнения заданий в определённое время.
Файл находится по адресу /etc/crontab, именно в него и добавляются строки с командами которые необходимо автоматически выполнять, а также команды можно поместить отдельным файлом в директории /etc/cron.d/, /etc/cron.daily/, /etc/cron.hourly/, /etc/cron.monthly/, /etc/cron.weekly/.
Приведу пример добавляемой строки в cron:
* * * * * команда
Таблица времени запуска:
— — — — —
| | | | |
| | | | —— День недели (0 — 7) (Воскресенье =0 или =7)
| | | ——- Месяц (1 — 12)
| | ——— День (1 — 31)
| ———— Час (0 — 23)
————- Минута (0 — 59)
Приведу несколько примеров времени выполнения команд:
* * * * *
Каждую минуту
*/5 * * * *
Каждые 5 минут
*/30 * * * *
Каждые 30 минут
0 * * * *
Каждый час
30 * * * *
Каждый час в 30 минут
0 */2 * * *
Каждые 2 часа
30 */2 * * *
Каждые 2 часа в 30 минут
59 23 31 12 5
За минуту до конца года, если последний день года — пятница
59 23 31 Dec Fri
За минуту до конца года, если последний день года — пятница (еще один вариант записи)
45 17 7 6 *
Каждый год 7-го июня в 17:45
0,15,30,45 0,6,12,18 1,15,31 * 1-5
В 00:00, 00:15, 00:30, 00:45, 06:00, 06:15, 06:30, 06:45, 12:00, 12:15, 12:30, 12:45, 18:00, 18:15, 18:30, 18:45, если сейчас 1-е, 15-е или 31-е число любого месяца и только по рабочим дням недели
*/15 */6 1,15,31 * 1-5
В 00:00, 00:15, 00:30, 00:45, 06:00, 06:15, 06:30, 06:45, 12:00, 12:15, 12:30, 12:45, 18:00, 18:15, 18:30, 18:45, если сейчас 1-е, 15-е или 31-е число любого месяца и только по рабочим дням недели (еще один вариант записи)
0 12 * * 1-5 (0 12 * * Mon-Fri)
В полдень по рабочим дням
* * * 1,3,5,7,9,11 *
Каждую минуту в январе, марте, мае, июле, сентябре и ноябре
1,2,3,5,20-25,30-35,59 23 31 12 *
В последний день года в 23:01, 23:02, 23:03, 23:05, 23:20, 23:21, 23:22, 23:23, 23:24, 23:25, 23:30, 23:31, 23:32, 23:33, 23:34, 23:35, 23:59
0 9 1-7 * 1
Первый понедельник каждого месяца, в 9 утра
0 9 * * 1
Каждый понедельник в 9 утра
0 0 1 * *
В полночь, первого числа, каждый месяц
* 0-11 * *
Каждую минуту до полудня
30 9 1 * *
1-го числа каждого месяца в 9:30
* * * 1,2,3 *
Каждую минуту в январе, феврале и марте
* * * Jan,Feb,Mar *
Каждую минуту в январе, феврале и марте
0 0 * * *
Каждый день в полночь
0 0 * * 3
Каждую среду в полночь
Чтобы результат выполнения команды не приходил на электронную почту в конце команды можно добавить:
>/dev/null 2>&1
Вот пример строки добавления скрипта /home/user/scrips.sh в Cron для автозапуска каждый день в полночь (файл должен быть с правами на выполнение):
0 0 * * * /home/user/script.sh >/dev/null 2>&1
Чтобы в случае ошибок получать уведомления на email, укажем (по умолчанию сообщения отправляются пользователю root):
MAILTO=example@ixnfo.com
Также можно выполнять скрипт или команду только при запуске системы указав @reboot в начале строки, но в некоторых Linux это может не работать, по этому рекомендую использовать rc.local, init.d и т.д., либо проверить работает ли @reboot:
crontab -l
@reboot echo "test" > /home/ixnfo.com/test.txt 2>&1
sudo reboot
cat /home/ixnfo.com/test.txt
Смотрите также мои статьи:
Перенаправление почты пользователя root
Как писать CRON логи в отдельный файл
Настройка Cron заданий в cPanel и WHM