Перейти к содержимому

Что такое cron?

    CRON — это утилита командной строки с помощью которой можно автоматизировать запуск программ, скриптов либо отдельных команд по расписанию.

    Cron очень удобный и незаменимый помощник системного администратор либо DevOps инженера для автоматизации различных задач путем объединения его с другими инструментами. Один из самых распространенных примеров комбинирования cron это использования его вместе с командой rsync для создания ежедневной либо еженедельной резервной копии. Еще один из примеров — watchdog таймер, программа которая переодически проверяет активный ли процесс либо он остановлен и в случаи если процесс остановлен то он будет заново запущен.

    В работе с cron нет ничего сложного и вы сейчас в этом убедитесь сами.

    Терминология

    Сперва разберемся с терминологией. Вы слышали три термина : cron, cron job, crontab , сейчас мы разберем каждый из них.

    cron — это программа, которая установлена в системе и запускается как демон.

    cron job — это выполняемая задача программой cron, к примеру запущенная программа либор скрип. Таких задач может быть несколько и каждая из этих задач называется заданиями cron либо cron jobs.

    crontab — это файл в котором перечислены задачи которые нужно выполнить и как часто они должны запускаться. В crontab может быть несколько заданий cron в табличной форме, где каждая строка является заданием cron.

    В качестве примера приведу вам cron job команду которая каждый час добавляет в файл crontext.txt текст

    0 * * * * echo "Cron is Cool!" >> ~/crontext.txt

    Теперь когда мы разобрали терминологию, перейдем к синтаксису и примерам.

    Пример использования Cron

    Для того чтобы создать задание cron необходимо выполнить команду:

    crontab -e

    После выполнения команды в текстовом редакторе будет открыт файл в который добавляются все задачи.

    Все строки которые начинаются с # являются закомментированными, таким образом вы можете либо выключать временно ненужные задачи либо добавлять описание к каждой задаче.

    Разбирать синтаксис мы можем на примере следующей команды

    * * * * * echo "Cron is Cool!" >> ~/crontab_test

    Начнем с самого начала, а именно с звездочек которые вы видите перед командой echo.

    Слева на права указываются следующие значения

    • минуты — может принимать значение от 0-59. Если вы укажите значение 0 то данная команда будет выполняться в начале каждого часа. При значении 10 команда будет выполняться каждую 10 минуту нового часа.
    • часы — может принимать значение от 0-23. Логика использования точно такая же как при использовании минут.
    • день месяца — может принимать значения от 1-31. Указывается день месяца в который должно быть выполнено задание. Необходимо учесть что если вы укажите 30 день месяца то в феврале в високосном году задание срабатывать не будет.
    • месяц — принимает значение от 1-12.
    • день недели — принимает значение от 0-6. Тут нужно быть внимательным так как начинается день недели не с 1 а с 0.

    Последнее значение в строке задания — команда/скрипт который должна выполняться.

    Для более лучше понимания когда будет запущена ваша команда, вы можете воспользоваться сайтом crontab.guru там же можете перепроверить себя, правильно ли вы выбрали время запуска вашей команды.

    Теперь вернемся к нашей команде которую была ранее. В нашем примере, каждую минуту будет добавляться текст Cron is Cool! в файл crontab_test.