Crontab - планировщик задач Linux, позволяющий выполнять задачи (приложения или скрипты) в определенное время. Сервис/демон, ежеминутно обращается к своим настройкам и проверяет, не нужно запустить задачу.
Настройка Crontab
Для открытие на редактирование используется следующая команда
crontab -e
при первом запуске, нас попросят выбрать редактор по умолчанию
Переменные crontab
Планировщик позволяет использовать (изменять) переменные окружения, к примеру указание оболочки по умолчанию и путей поиска, позволит выполнять приложения без необходимости указывать полный путь до вызываемого приложения.
1 2 3 4 | SHELL=/bin/sh PATH=/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin MAILTO="" |
Формат задания в Crontab
Все задания в планировщике пишутся в определенном формате
# m h dom mon dow command
m - минуты (от 0 до 59)
h - часы (от 0 до 23)
dom - день месяца (1-31)
mon - месяц (1-12)
dow - день недели (от 0 до 6), 0 - это воскресенье, 1 - понедельник и т.д.
command - сама команда, которую нам необходимо будет выполнить.
- В одной строчке должно располагаться только одно задание
- Между параметрами возможно использовать как знак табуляции, так и обычный пробел
- Если какой то параметр не задействован, то вместо него используется * (звездочка)
- Если важен диапазон запуска, через какой промежуток времени повторять, то следует использовать m/period (где m - минуты, а period - через сколько минут повторять)
- После задания обязателен переход на новую строку, которое сообщает Crontab что это конец задания
- Возможно использовать перечисление (через запятую или тире) когда задача должна запуститься несколько раз
Примеры использования Crontab
Запуск команды в 00 минут и в 10 минут, каждого часа
1 | 0,10 * * * * ping localhost |
Запуск задачи в 45 минуту каждого часа
1 | 45 * * * * ping localhost |
Запуск команды каждую минуту, с понедельника по пятницу.
1 | * * * * 1-5 ping localhost |
Запуск команды каждую минуту
1 | * * * * * ping locahost |
Запуск команды каждые 5 минут
1 | */5 * * * * ping localhost |
Запуск команды каждый день в 4 утра
1 | 0 4 * * * ping localhost |
Запуск каждый день в 7 утра
1 | 0 7 * * * ping localhost |
Запуск задачи каждые 30 минут
1 | */30 * * * * ping localhost |
Запуск задачи каждый день в 23:50
1 | 50 23 * * * ping localhost |
Запуск команды после перезагрузки
1 | @reboot ping localhost |