crontab на пальцах
Сегодня я расскажу о демоне crontab, который выполняет нужные нам задачи по расписанию, которое мы можем удобно настраивать.
Иногда вам требуется вызвать команду/исполнить скрипт в определенное время, или исполнять его с какой-то периодичностью, скажем, каждые пол часа или раз в день, и есть желание автоматизировать рутинные действия. Как раз для этой задачи и предназначен демон crontab, который читает таблицу задач, и исполняет задачи в нужное нам время.
На Ubuntu 20.04 он уже предустановлен, вот что может утилита
crontab path/to/file.crontab #загрузить таблицу из файла crontab -e #редактировать таблицу crontab -r #удалить таблицу crontab -l #посмотреть на таблицу
Давайте попробуем отредактировать существующую пустую таблицу
crontab -e
Далее выбираем редактор в котором вам удобнее работать, я выбрал nano
Описывать задачи можно таким образом
* * * * * exec/this/one.sh #скрипт one.sh будет запускаться ежеминутно
15 * * * * exec/this/one.sh #скрипт one.sh будет запускаться
#на 15 минуте каждого часа
0 18 * * 5 exec/this/one.sh > tmp/cron-job-output.log
# скрипт one.sh будет запускаться каждую пятницу в 18:00 и перенаправлять
# вывод в лог файл *< * * * * # Минута [0-59] * *< * * * # Час [0-23] * * *< * * # День месяца [1-31] * * * *< * # Месяц [1-12] * * * * *< # День недели [0-6], где 0 - воскресенье * * * * * exec/this/one.sh< #то, что требуется исполнить в нужное время
Условно, если хочется чтобы скрипт запускался каждые два часа то задача будет выглядеть так
0 */2 * * * exec/this/one.sh # задача one.sh исполнится на 0-й минуте
# каждого второго часаЕсли хочется запустить скрипт не на bash, то перед путем к скрипту следует указать путь до интерпретатора
* * * * * /usr/bin/python3 exec/this/one.py
Рекомендую заглянуть на ресурс, там вы найдете подробную документацию, и сможете наглядно потестить условия выполнения задач.