Cron самый популярный планировщик задач в Linux системах.
Каждый администратор Linux так или иначе прибегает к работе с cron, будеь это перезапуск какого-нибудь сервиса в определенное время или например запуск скрипта ежедневный.
Нам нужно добавить задачу в Cron,но для начала мы можем увидеть какие текущие задачи в нем есть командой:
# crontab -l
Если мы получаем подобный ответ:
-bash: crontab: command not found
Что же делать.
Это значит у нас не установлен cron, что мы легко исправим следующими командами:
Install Crontab для Centos:
# sudo yum update # sudo yum install vixie-cron crontabs
Install Crontab для Ubuntu/Debian:
#sudo apt-get update #sudo apt-get install cron
Закончили установку.
Для примера будем придумывать себе задания, которые попробуем решить с помощью планировщика заданий Cron.
Также на понадобится конкретное действие , которые мы будем исполнять, например:
1. команду service nginx restart, которая перезапускает службу веб-сервера nginx.
2. запуск скрипта /scripts/script-ithelp21.sh
Начнем с того, что есть два варианта добавления заданий в cron:
1. Через редактирование файла /etc/crontab
2. Через команду crontab -etc/crontab -etc/crontab
Открываем редактор cron командой:
crontab -e
Задания добавляются в виде строк:
* * * * * service nginx restart * * * * * /scripts/script-ithelp21.sh
перезагружает веб-сервер и запускает скрипт каждую минуту.
* * * * * выполняемая команда - - - - - | | | | | | | | | ----- День недели (0 - 6) (Воскресенье =0 или =7) | | | ------- Месяц (1 - 12) | | --------- День (1 - 31) | ----------- Час (0 - 23) ------------- Минута (0 - 59)
Слева направо ознакомимся с значением *, которые она может принимать.
Каждая звездочка это возможное место для цифры:
1. Минуты (0 — 59) 2. Часы (0 — 23) 3. День месяца (0 — 31) 4. Месяц (1 -12) 5. День недели (0 — 6, 0 — воскресенье)
И на основе данной информации пройдемся по возможным примерам.
#Как запустить команду с одинаковым промежутком времени.
*/5 * * * * service nginx restart 42 * * * * /scripts/script-ithelp21.sh
#В данном примере сервис nginx будет перезапуск каждые 5 минут, а скрипт запускается в 42 минуты каждого часа.
#Как запустить команду в определенное время.
0 2 * * * service nginx restart 30 16 * * 3 /scripts/script-ithelp21.sh
Nginx будет перезапуск ежедневно ровно в 2 часа ночи, а скрипт запускаться будет каждую среду в 16-30.
#Перезапускаем веб-сервер в 2 часа 5 минут каждое 15 число месяца.
5 2 15 * * service nginx restart
#Запускаем скрипт с понедельника по пятницу в 15-00:
0 15 * * 1-5 /scripts/script-ithelp21.sh
#Запускаем скрипт каждые три часа в 0 минут
0 */3 * * * /scripts/script-ithelp21.sh
Есть еще вариант использовать немного другой формат планировщика задач в виде:
@reboot - Запуск при загрузке @yearly - в первую минуту каждого года (0 0 1 1 *). @monthly - в первую минуту месяца (0 0 1 * *) @weekly - в первую минуту недели (0 0 1 * 1) @daily - в первую минуту каждого дня (0 0 * * *) @midnight - в полночь (00:00) @hourly - в первую минуту каждого часа (0 * * * *)
Например, команды будут выполнять одинаковый функционал:
@monthl scripts/script-ithelp21.sh 0 0 1 * * scripts/script-ithelp21.sh