Крон что это в программировании
Перейти к содержимому

Крон что это в программировании

  • автор:

Планировщик задач Cron и команда crontab

Cron (Command Run ON) — система для автоматического запуска программ и скриптов на сервере в определённое время.

Управлять cron нужно с помощью команды ‘crontab’.

Команда crontab -l покажет список текущих заданий, crontab -e автоматически запустит текстовый редактор и загрузит в него файл конфигурации cron. После выхода из редактора, новая конфигурация cron будет установлена (вступит в силу) автоматически.

Конфигурационный файл содержит последовательность командных строк и расписание их вызова. Пустые строки и строки, начинающиеся с символа ‘#’ игнорируются. Остальные строки являются установками переменных окружения и командами cron.

Запись crontab- файла в общем случае состоит из семи полей:

минуты часы день месяц день_недели имя_пользователя команда

Допустимые значения временных параметров:

Параметр Допустимый интервал
минуты 0-59
часы 0-23
день месяца 1-31
месяц 1-12
день недели 0-7 (0-Вс,1-Пн,2-Вт,3-Ср,4-Чт,5-Пт,6-Сб,7-Вс)

Поле может быть задано явно или шаблоном:

  • * — любая цифра;
  • целое число;
  • целые числа через запятую — задание дискретного множества значений, например 1,2,5;
  • два целых числа, разделенные дефисом, соответствующие диапазону значений, например 3-6.

Пример готовой строки сценария cron:

# Выполнять задание в 18 часов 7 минут 13 мая если это пятница
7 18 13 5 5 /home/www/myscript.pl
# Выполнять задание раз в час в 0 минут
0 */1 * * * /home/www/myscript.pl
# Выполнять задание каждые семь часов в 0 минут
0 */7 * * * /home/www/myscript.pl
# Выполнять задание по воскресеньям в 10 час 30 минут
30 10 * * 0 /home/www/myscript.pl

Выполнение PHP-файлов

Для выполнения php скриптов из cron необходим бинарный интерпретатора PHP.

Реальный путь на сервере к корневой директории сайта и путь к PHP уточните в службе поддержки хостинга.

# Пример запуска скрипта в 5 утра каждый день:
0 5 * * * /usr/bin/php -q /home/www/script.php

Обратите внимание, при запуске из cron опция -q указывает PHP не выдавать HTTP-заголовки.

Cron — запуск программ пользователя в указанное время

В ОС Unix существует возможность запускать программы пользователя в указанное им время. Для этого используется программа cron, которая получает инструкции от пользователей и, следуя им, производит выполнение любых задач по полученным сценариям. Наши клиенты могут пользоваться данной возможностью для выполнения периодических задач.

  • Как настраивать cron в Личном кабинете (для unix-тарифов)
  • Как настраивать cron в Личном кабинете (для windows-тарифов)
  • Как настраивать cron по ssh
  • Примеры использования cron
  • Как запускать PHP-скрипты по расписанию
  • Как получать сообщения об ошибках от программ, запускаемых cron
  • Ограничения
  • Полезные ссылки

Как настраивать cron в Личном кабинете (для unix-тарифов)

cp.masterhost.ru — Услуги — виртуальная площадка — СRON.

Здесь Вы увидите список Ваших сценариев. Их можно редактировать, остановить на время выполнение или удалить окончательно:

Чтобы добавить новые задания, заполните поля в интерактивном редакторе cron-сценариев:

В поле «Команда» укажите полный путь до скрипта или команду, которая должна выполняться. Например, полный путь до файла script.pl, размещенного в корне Вашей площадки, будет выглядеть так:

/home/u12345/script.pl

Убедитесь, что файл, который Вы хотите запускать, имеет права на чтение+исполнение (r+x) для владельца файла. Поменять права на нужные можно командой:

chmod 750 script.pl

Вы можете выполнять запуск скриптов на языке PHP в указанное время с желаемой периодичностью. Для этого требуется использовать PHP-CLI интерпретатор , пример использования которого описан здесь. Команда на запуск скрипта script.php может выглядеть, например, так:

/usr/local/bin/php -q $HOME/script.php > /dev/null 2>&1

Поскольку не все PHP-программы могут работать через CLI SAPI без предварительной модификации, можно запускать их через wget. Например:

/usr/local/bin/wget -O /dev/null -q http://mysite.tld/cron.php?action=123

Обратите внимание, что путь до утилит нужно указывать полностью, от корня файловой системы. Если в скрипте используются функции require, include, причём в них указаны относительные пути, то в начале выполняемого скрипта используйте вызов функции chdir(), которая задаст текущую рабочую директорию.

Далее нужно выбрать периодичность, с которой будет запускаться Ваш сценарий. Вы выбираете один из вариантов в каждой из 5 колонок: минуты (точное значение от 00 до 59 либо период), часы (от 00 до 23 либо период), день, месяц и день недели. Примеры:

  • выполнять задание раз в час в 05 минут
  • выполнять задание по понедельникам в 1 час 15 минут ночи
  • выполнять задание 5 апреля в 0 часов 1 минуту каждый год

Последнее поле – «Комментарий» – является необязательным. В нем Вы можете указать дополнительные инструкции для crontab – например, почтовый адрес для получения результатов выполнения Вашего скрипта. Для этого в комментарий добавьте такую строку:

MAILTO=mail@box.ru

Вместо mail@box.ru укажите Ваш почтовый ящик. Если нужно получать сообщения об ошибках на несколько адресов, укажите все эти адреса через запятую. С помощью комментариев Вы можете установить переменные окружения (HOME, PATH, SHELL и т.д. ).

Когда все поля будут заполнены (кроме поля «комментарий», оно необязательное), нажмите «Сохранить».

Как настраивать cron в Личном кабинете (для windows-тарифов)

Напишите заявку из Личного кабинета в отдел «Техподдержка».

Как настраивать cron по ssh

Конфигурирование сценариев cron производится через unix shell. Прежде всего нужно определить, какие программы Вы хотите запускать и узнать полные пути к ним на диске сервера. Для этого перейдите с помощью команды cd в каталог, где находится запускаемая программа, и узнайте полный путь к этому каталогу с помощью команды pwd. Путь может выглядеть, например, как /home/u12345/scripts/script.pl. Убедитесь, что файл, который Вы хотите запускать, имеет права на чтение+исполнение (r+x) для владельца файла.

Поменять права на нужные можно командой:

chmod 750 script.pl

Далее выполните команду crontab -e. Вы окажетесь в текстовом редакторе vi, где сможете вводить текст сценария для cron. Краткая справка по редактору vi:

  • для вставки текста нажмите i, затем вводите текст
  • для удаления символов нажмите ESC, а затем наберите x
  • для выхода из vi без сохранения изменений нажмите ESC, а затем наберите :q!
  • для сохранения и выхода нажмите ESC, а затем наберите :wq

Задания для cron пишутся по одному в строке. После каждой строки, в том числе после последней или единственной, обязательно нужно нажать enter — иначе задания работать не будут.

Задание для cron выглядит как строка, в начале находятся пять обязательных полей для указания периодичности задания, а далее следует команда, которую нужно запускать:

поле1 поле2 поле3 поле4 поле5 команда

Значения первых пяти полей:

  1. минуты — число от 0 до 59
  2. часы — число от 0 до 23
  3. день месяца — число от 1 до 31
  4. номер месяца в году — число от 1 до 12
  5. день недели — число от 0 до 7 (0-Вс,1-Пн,2-Вт,3-Ср,4-Чт,5-Пт,6-Сб,7-Вс)

Для каждого конкретного параметра можно задать несколько значений через запятую. Например, если в поле «часы» написать 1,4,22, то задание будет запущено в 1 час ночи, в 4 часа утра и в 22 часа. Можно задать интервал — 4-9 будет означать, что программу нужно запускать каждый час в период с 4 до 9 часов включительно. Символ ‘*‘ означает «все возможные значения». Например, указание ‘*‘ в поле «часы» будет означать «запускать каждый час». Символ ‘/‘ служит для указания дополнительной периодичности задания. Например, ‘*/3‘ в поле «часы» означает «каждые три часа».

Примечание: если определены оба поля «день месяца» и «день недели» (т.е не равны *), то такое задание будет выполняться в каждый указанный день недели независимо от дня месяца. Например, следующая команда будет выполняться в 13 часов 13 минут каждую пятницу и каждое 10 число месяца, даже если 10 число не совпадет с пятницей.

13 13 10 * 5 /home/u12345/script.pl

Итак, как выглядит простейший сценарий cron:

0 */3 * * 2,5 /home/u12345/script.pl

Скрипт /home/u12345/script.pl будет автоматически запускаться каждые три часа во вторник и в пятницу. Введя такой сценарий в редакторе vi, выйдите с сохранением результатов редактирования, и, если Вы не допустили ошибок, задание будет поставлено на выполнение с указанной периодичностью. Если при редактировании были допущены ошибки, cron сообщит Вам о них.

/tmp/crontab.xxxxxxx: 1 строк, 9 символов crontab: installing new crontab "/tmp/crontab.xxxxxxx":1: bad minute crontab: errors in crontab file, can't install Do you want to retry the same edit?

Исправьте ошибки и попробуйте сохранить задание опять.

Посмотреть список уже установленных в cron сценариев можно командой crontab -l:

-bash-2.05b$ crontab -l 0 */3 * * 2,5 /home/u12345/script.pl

Рекомендация: если требуется запускать какую-то программу один раз в день, особенно если она требует для выполнения больших ресурсов, выполняйте такое задание ночью, в период с 2 до 8 часов — нагрузка на серверы в это время минимальна.

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

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

# выполнять задание раз в час в 0 минут 0 */1 * * * /home/u12345/script.pl # выполнять задание каждые три часа в 0 минут 0 */3 * * * /home/u12345/script.pl # выполнять задание по понедельникам в 1 час 15 минут ночи 15 1 * * 1 /home/u12345/script.pl # выполнять задание 5 апреля в 0 часов 1 минуту каждый год 1 0 5 4 * /home/u12345/script.pl # выполнять задание ежемесячно 1 числа в 6 часов 10 минут 10 6 1 * * /home/u12345/script.pl

Как запускать PHP-скрипты по расписанию

Вы можете выполнять запуск скриптов на языке PHP в указанное время с желаемой периодичностью. Для этого требуется использовать PHP-CLI интерпретатор, пример использования которого описан здесь.

Поскольку не все PHP-программы могут работать через CLI SAPI без предварительной модификации, можно запускать их через wget. Например:

/usr/local/bin/wget -O /dev/null -q http://mysite.tld/cron.php?action=123

Если в скрипте используются функции require, include, причём в них указаны относительные пути, то в начале выполняемого скрипта используйте вызов функции chdir(), которая задаст текущую рабочую директорию.

Как получать сообщения об ошибках от программ, запускаемых cron

Если при выполнении программы, которая запускается из cron, возникли ошибки, наверняка вы захотите получать сообщения об этих ошибках, чтобы полностью контролировать работу периодически запускаемых заданий. Для этого в комментарий добавьте такую строку:

MAILTO=адрес@домен.ru

Конечно, адрес@домен.ru нужно заменить на реально существующий адрес электронной почты куда надо будет доставлять уведомления. Если нужно получать сообщения об ошибках на несколько адресов, укажите все эти адреса через запятую.

Обратите внимание на то, что cron будет присылать по почте то, что выводят запускаемые скрипты. Например, если вы напишете скрипт, который будет печатать строчку «Hello, world» и поставите его на выполнение через cron, вы будете получать по почте письмо со строкой «Hello, world» каждый раз, когда cron будет запускать такой скрипт.

Чтобы избежать этого, например, когда текст, выводимый скриптом, вам не нужен, надо добавить в конец строки-сценария для cron символы

> /dev/null 2>&1

Полностью строка для cron будет выглядеть так:

0 1 * * * /usr/local/bin/php -q $HOME/script.php > /dev/null 2>&1

Рекомендуем проверять корректность синтаксиса скриптов, которые вы устанавливаете на выполнение через cron. Скрипты могут содержать ошибку, могут неодинаково работать при запуске через веб-сервер и через cron, и так далее. Для того, чтобы убедиться, что скрипт будет правильно работать через cron, предварительно проверьте его такой командой в unix shell:

/usr/local/bin/php -l script.php

Если ошибок в скрипте нет, вы увидите сообщение «No syntax errors detected in script.php».

Ограничения

Для программ, которые запускаются через cron, действуют такие же ограничения по потребляемым ресурсам, как для процессов, запускаемых пользователем в unix shell. Речь идет об ограничениях на время выполнения программы, количеству доступной памяти, ограничениях на размер файлов, и так далее.

Полезные ссылки

  • man (5) crontab — man-страница по программе crontab

Cron Jobs — пособие для начинающих

Cron — один из часто используемых инструментов для Unix-систем. Учимся писать задания в Cron вручную и с помощью простых и удобных веб-инструментнов.

Обложка поста Cron Jobs — пособие для начинающих

Cron — один из часто используемых инструментов для Unix-систем. Его используют для планирования выполнения команд на определённое время. Эти «отложенные» команды или задания принято называть «Cron Jobs». Такой инструмент отлично подходит для регулярных бэкапов, мониторинга дискового пространства, удаления файлов (например, логов) и много чего ещё. В этой статье будет рассказано о работе с Cron на Linux.

Введение

Шаблон задания для Cron выглядит примерно так:

Минуты(0-59) Часы(0-24) День(1-31) Месяц(1-12) День недели(0-6) Команда 

Вот иллюстрация этого же шаблона, которую можно сохранить себе:

Cron Jobs — пособие для начинающих 1

Звёздочками обозначены конкретные блоки времени.

Для отображения содержимого crontab-файла текущего пользователя используйте команду:

$ crontab -l 

Для редактирования заданий пользователя есть команда:

$ crontab -e 

Если эта команда выполняется в первый раз, вам предложат выбрать редактор для Cron:

no crontab for sk - using an empty one Select an editor. To change later, run 'select-editor'. 1. /bin/nano 

Выбирайте на своё усмотрение. Вот так изначально выглядит crontab-файл:

Cron Jobs — пособие для начинающих 2

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

Чтобы изменить crontab-файл другого пользователя (например, ostechnix):

$ crontab -u ostechnix -e 

Ниже приведены несколько примеров cron-заданий:

  1. Чтобы выполнять команду каждую минуту, задание должно быть такое:* * * * *
  2. Похожее задание, только команда будет вызываться каждые пять минут:*/5 * * * *
  3. Вызывать команду 4 раза в час (каждые 15 минут):*/15 * * * *
  4. Чтобы выполнить команду каждый час в 30 минут, пишем:30 * * * * Т. е. команда будет выполняться не каждые 30 минут, а тогда, когда значение минут будет равно 30 (например, 10:30, 11:30, 12:30 и т. д.).
  5. Значения времени можно комбинировать, перечислив их через запятую. Следующий код будет выполнять команду три раза в час: в 0, 5 и 10 минут.0,5,10 * * * *
  6. Выполнять команду каждый час будет следующее задание:0 * * * *
  7. Выполнение команды каждые два часа:0 */2 * * *
  8. Чтобы выполнять команду каждый день (в 00:00):0 0 * * *
  9. Выполнение команды каждый день в 03:00:0 3 * * *
  10. Выполнение команды каждое воскресенье (sunday):0 0 * * SUN
  11. Другой вариант задания, которое будет выполнять команду каждое воскресенье (естественно, тоже в 00:00):0 0 * * 0
  12. Выполнение команды каждый день с понедельника по пятницу:0 0 * * 1-5
  13. Следующее задание будет выполнять команду каждый месяц, 1-го числа в 00:00:0 0 1 * *
  14. Выполнять команду в 16:15 каждого первого числа месяца будет это задание:15 16 1 * *
  15. Выполнение команды каждые три месяца:0 0 1 */3 *
  16. Выполнение команды в строго определённое время и месяц:5 0 * 4 *
  17. Задание будет вызывать команду в начале каждого полугодия (в 00:00 1-го дня):0 0 1 */6 *
  18. Выполнение команды каждый год 1-го января в 00:00:0 0 1 1 *

Ещё существуют готовые задания:

  • @reboot — одиночное выполнение команды при загрузке;
  • @yearly — раз в год;
  • @annually — тоже раз в год;
  • @monthly — раз в месяц;
  • @weekly — один раз в неделю;
  • @daily — раз в день;
  • @midnight — тоже раз в день;
  • @hourly — раз в час.

Чтобы выполнять команду каждый раз после перезапуска сервера, используйте это задание:

@reboot

Команда для очистки всех заданий текущего пользователя:

$ crontab -r 

Чтобы узнать о подробностях, есть команда:

$ man crontab 

Вышеперечисленного уже должно хватить для базовой работы с Cron и составления заданий.

Синтаксис crontab-генераторов

Процесс написания заданий сильно упрощают веб-инструменты. Они не требуют знаний синтаксиса Cron, потому что у них графический интерфейс, а задания генерируются в соответствии с вводимыми данными. Сайт генерирует задание, которое можно будет просто скопировать и вставить в crontab-файл.

Crontab.guru

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

Cron Jobs — пособие для начинающих 3

На сайте есть разделы, посвящённые примерам и советам.

Crontag Generator

crontab-generator.org — ещё один сайт, который помогает быстро сгенерировать crotab-выражения. Принцип такой же: нужно ввести все необходимые данные в формы и нажать кнопку «Generate Crontab Line» внизу страницы.

Cron Jobs — пособие для начинающих 4

Вот такое конечное выражение вы увидете на сайте:

Cron Jobs — пособие для начинающих 5

Помимо этого, есть веб-инструмент «Crontab UI», который обеспечивает не только простоту создания crontab-заданий, но и безопасность. Вот статья, посвящённая этому инструменту.

Cron

Cron — популярный инструмент в Unix-системах, который помогает запланировать исполнение различных заданий прямо в ОС. Операции будут совершаться в обозначенные дату и время, с указанной пользователем периодичностью. Такие отложенные процессы также называют cron jobs. Этот инструмент подходит для решения многих задач: отслеживания свободного дискового пространства, регулярного резервного копирования, удаления ненужных файлов (логов) и т.д.

«IT-специалист с нуля» наш лучший курс для старта в IT

Что такое cron и файлы crontab

Коротко cron можно описать как планировщик задач. Он способен в обозначенное время с определенной периодичностью выполнять скрипты на сервере. Например, разработчику нужно собирать статистику каждые 3 дня в 18:00. Для этого он создает «задание», логику которого описывает в файле crontab.

Файл crontab представляет собой таблицу, оформленную в специальном формате и содержащую расписание старта скриптов. Каждый пользователь на сервере системы получает доступ к индивидуальному crontab-файлу, в котором создает нужные ему задачи.

Cron является встроенной утилитой и доступен в каждом дистрибутиве Linux. Обратите внимание, он считается устаревшим в операционных системах с поддержкой systemd. В таких дистрибутивах Linux его заменили на systemd.timer. Предназначение этой утилиты полностью совпадает с cron. При этом популярность «устаревшего» планировщика все еще выше благодаря простоте использования.

Профессия / 8 месяцев
IT-специалист с нуля

Попробуйте 9 профессий за 2 месяца и выберите подходящую вам

vsrat_7 1 (1)

Когда применяется cron

Как правило, от cron в операционных системах на основе Linux требуют выполнения очевидных задач, например бэкапов сайтов, баз данных и пр. Однако сфера применения этого инструмента гораздо шире.

  1. Пользователи могут с помощью планировщика запускать скрипты для корректировки системного времени. Эта операция нужна, потому что время ОС и аппаратного обеспечения может различаться (это нужно исправлять). Если для программной настройки обычно используется Network Time Protocol, то корректировку для «железа» может регулярно выполнять cron.
  2. Один из распространенных сценариев использования планировщика — создание оповещений, которые демонстрируются пользователю каждое утро. В этих сообщениях может содержаться информация о состоянии компьютера или любые другие полезные данные. Например, утилита может присылать администратору электронные письма с отчетом о работе сайта за последние сутки.
  3. Некоторые сервисы могут использовать cron даже без ведома владельца компьютера. Среди примеров можно назвать Rootkit Hunter, Logwatch и Logrotate. Большинство повторяющихся задач они настраивают, используя эту утилиту.

Cron дает пользователям возможность автоматизировать множество задач и сократить влияние человеческого фактора на работу сервера. Например, утилита не забудет сделать резервную копию.

Основные принципы работы с cron и crontab через SSH-протокол

В тех случаях, когда хостинг-провайдер не предоставляет пользователю функциональных веб-интерфейсов для управления сервером, для работы с cron приходится использовать командную строку. Для подключения к серверу понадобится протокол Secure Shell.

Чтобы работа с планировщиком стала проще, предусмотрен ряд команд для решения основных задач:

  • crontab -e — открытие файла конфигураций (настроек);
  • crontab -l — демонстрация списка, то есть всех запланированных операций для конкретного пользователя;
  • crontab -r — полное удаление файла настроек и всех задач текущего пользователя;
  • crontab -v — информация о последнем открытии файла конфигураций;
  • man crontab — позволяет узнать подробную информацию.

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

Первичная настройка cron

В своей работе планировщик задач использует информацию из таблиц crontab. Как отмечалось ранее, каждый пользователь на сервере вне зависимости от прав (в том числе root) должен иметь свой индивидуальный файл crontab. По умолчанию в системе их нет, поэтому они создаются вручную.

Чтобы создать таблицу, нужно ввести команду crontab -e. После этого в директории /var/spool/cron автоматически появится нужный файл.

Если команда crontab -e выполняется впервые, система предложит определить, какой редактор будет использоваться. На выбор может быть предложено несколько вариантов, из которых /bin/nano будет самым простым, также пользователь может увидеть /usr/bin/vim.basic и другие. Каждый вариант будет пронумерован. Чтобы выбрать, нужно нажать соответствующую цифру.

Новый файл crontab представляет собой пустое текстовое поле. Пользователь с нуля добавляет в него задачи, используя соответствующий синтаксис. Когда все параметры будут введены, нужно сохранить их нажатием клавиши F2. Чтобы закрыть файл, необходимо нажать F10. Если пользователь все сделал правильно, в терминале появится строка следующего содержания:

crontab: installing new crontab

За работу планировщика задач после сохранения настроек в Linux отвечает фоновый процесс crond.

Формат записей

Для создания заданий в cron используется специальный формат строк в таблице-расписании. В каждой из них содержится определенная информация:

  • параметры для запуска нужной задачи (дата, время);
  • сама команда для выполнения операции.

Команда в этом случае — название скрипта в файловой системе Linux. К скриптам можно добавлять различные специальные параметры, они отделяются от названия при помощи пробелов.

Станьте разработчиком на Python и решайте самые разные задачи: от написания кода до автоматизации процессов

Синтаксис crontab

Сначала нужно ввести команду crontab -e. Код в первых трех линиях таблицы нужен для настройки первичных параметров таблицы. Сначала необходимо выбрать оболочку для работы утилиты. У cron нет рекомендаций по оптимальному варианту — планировщик будет стабильно работать в любой оболочке. Если пользователь хочет получать отчеты о работе cron, нужно указать email, куда их отправлять. Третьей строкой прописывается путь к окружению.

Описание самой задачи начинается с ввода значений в 5 специальных полей, которые указывают, в какое время запустится нужный процесс.

  1. Минуты (допустимы параметры от 0 до 59).
  2. Часы (можно ввести значения от 0 до 23).
  3. Дата (от 1 до 31).
  4. Месяц (порядковый номер от 1 до 12).
  5. Дни недели. Отсчет начинается с воскресенья, которое обозначается как 0, суббота, соответственно, 6. Также доступны варианты с сокращениями SUN, MON и т.п.

Между значениями этих полей необходимо ставить пробелы, чтобы отделять их друг от друга. Чтобы процесс корректно запускался, параметры времени также необходимо отделять пробелом от названия скрипта.

Шаблон для создания Cron, можно задать интервал исполнения от минут до месяца

На изображении выше показан шаблон, который помогает понять, как вводить параметры в расписание. Обратите внимание на значки * — это конкретные значения, которые нужно ввести, чтобы задать время выполнения задачи. Когда в поле нет числа, а есть только *, значит, скрипт будет подставлять любые возможные значения. Если оставить * в поле месяца, но прописать значения в предыдущих, скрипт будет выполняться ежемесячно в конкретный день, если он есть. Например, планировщик не запустит процесс в феврале, если дата выставлена на 30 число.

Стандартная запись будет выглядеть так:

20 07 * * * /home/admin/backup

Она означает, что cron ежедневно будет запускать команду /home/admin/backup утром в 7 часов 20 минут.

В полях даты и времени допустимо использовать дополнительные символы.

  • Запятые — для создания перечней. Можно прописать в поле «часы» значение 5,10,19, в этом случае указанная команда в течение суток будет запускаться трижды — в 5, 10 и 19 часов.
  • Слэши — для создания цикличности. Запуск команды можно описать с помощью временных промежутков без привязки к конкретному времени. Например, ввести */20 в поле «минуты», тогда скрипт будет срабатывать каждые 20 минут.
  • Тире — для обозначения промежутка. Можно ввести в поле «дни недели» параметры «0-3», чтобы скрипт срабатывал с воскресенья по среду, а в остальные дни не запускался.

Важно учитывать, что запуск команд привязан к серверному времени и к часовому поясу (timezone). Чтобы узнать второй параметр, можно обратиться к службе поддержки хостинга или ввести команду date в командную строку.

Существуют уже готовые команды, которые позволяют задать параметры выполнения скрипта. Они выглядят так:

  • @reboot — команда выполнится один раз при перезагрузке системы;
  • @yearly — задание будет выполняться один раз в год;
  • @annually — вариация команды @yearly, делает то же самое, но в Новый год;
  • @monthly — ежемесячное выполнение задания;
  • @weekly — скрипт будет срабатывать раз в неделю;
  • @daily — ежедневное выполнение;
  • @midnight — срабатывание раз в день в полночь;
  • @hourly — скрипт выполняется ежечасно.

Записи с готовыми командами выглядят следующим образом:

Какие команды можно задавать в Cron через командную строку

Приведем примеры, как могут выглядеть команды в файле crontab для выполнения различных заданий.

Команда №1

03 07 10 * * /usr/local/bin/backup -vbd1 ; /usr/local/bin/backup -vbd2

Такая команда создаст в расписании задание на запуск процесса backup (его нужно будет сначала создать), который будет проводить резервное копирование на сторонний накопитель всех системных файлов. Скрипт будет запускаться в 7 часов 3 минуты 10 числа. Оставшиеся поля со звездочками показывают, что у задачи нет конкретных значений месяца и дня недели, значит, бэкап будет выполняться ежемесячно.

Команда №2

32 12 * * * /sbin/hwclock —systohc

Эта задача заставляет приводить к единому значению время в операционной системе и аппаратном обеспечении. Происходить данный процесс будет ежедневно в 12 часов 32 минуты. Здесь не указана дата, поэтому cron воспринимает задание как подлежащее к исполнению ежедневно.

Команда №3

15 03 21 * * /usr/bin/apt-get update

Эта задача обновит пакеты через пакетный менеджер apt. Выполняться эта операция будет ежемесячно 21 числа в 03:15.

Ограничения Cron

Планировщик cron позволяет установить ограничения на его использование. Чтобы задать их, существуют специальные файлы cron.deny и cron.allow.

Cron.deny располагается в /usr/lib/cron/cron.deny. Этот файл содержит названия учетных записей, которым запрещено пользоваться планировщиком. Они не могут создать свой crontab и задания в нем.

Cron.allow располагается в /usr/lib/cron/cron.allow. В файле находится перечень имен пользователей, которым разрешено планировать задачи с использованием данной системной утилиты.

Когда в системе нет cron.allow, то не существует никаких ограничений на планирование задач — все пользователи по умолчанию могут пользоваться возможностями Cron, если имен их учетных записей нет в файле cron.deny.

Основные принципы работы с планировщиком через панель управления

В меню панелей управления сервером многие хостинг-провайдеры предусматривают отдельное меню, которое позволяет пользоваться возможностями Cron. Например, в панели управления Timeweb для создания задачи требуется зайти в раздел Crontab. В интерфейсе он расположен сбоку слева. В открывшемся меню нужно нажать на кнопку «Добавить новую задачу» и ввести ее параметры. Разберемся, что именно нужно учитывать при создании повторяющегося задания.

Так выглядит создание задания Cron в панели управления хостингом

  • Задаче нужно дать название, в котором не будут использоваться спецсимволы. Подойдет любой текст, но желательно описать, что именно в этом случае будет делать cron, чтобы в дальнейшем не запутаться.
  • Следует обозначить исполнителя задачи. Это значит, пользователь указывает, с чем будет работать планировщик (HTTP-запросом, PHP-скриптом или файлом).
  • Затем заполняется графа «Путь до файла». Здесь должен быть путь до того скрипта, который будет регулярно запускаться с помощью cron. Например, это может выглядеть так: /home/usr/someusername/thescriptfortest.php. Панели управления также предлагают воспользоваться встроенным файловым менеджером, чтобы упростить работу.
  • На финальном этапе настройки указывается, с какой периодичностью будет исполняться задача. Панель управления предлагает несколько вариантов по умолчанию в стиле «Раз в день», но пользователь может выбрать вариант «Продвинутые настройки» и задать параметры вручную. После этого останется нажать «Создать задачу».

Работа с планировщиком через панель управления легче: пользователю не нужно запоминать синтаксис crontab, вероятность ошибки очень мала. Предлагаем посмотреть, как Cron выглядит в интерфейсе ISPmanager.

Создание Cron в ISPmanager

Синтаксис crontab-генераторов

Добавление заданий можно сильно упростить, если использовать специальные веб-инструменты. Они позволяют не изучать синтаксис, потому что обладают графическим интерфейсом: достаточно ввести нужные параметры, а задания будут создаваться сами. Затем сайт генератора выдаст код, который можно скопировать и вставить в crontab.

Crontab.guru

Сайт, который позволяет быстро изучить разные варианты заданий для Cron. Просто введите данные, и сайт самостоятельно сгенерирует конечное задание. Этот веб-ресурс также предлагает подсказки и примеры стандартных задач для планировщика.

Crontab.guru — Здесь можно cгенерировать задание Cron

Crontag Generator

Второй ресурс для генерации кода, который потом можно использовать в crontab-файле. Принцип работы такой же, как у предыдущего сайта: пользователь вводит данные, проставляет флажки в чекбоксы и в итоге нажимает кнопку Generate Crontab Line.

Crontag Generator — еще один ресурс для создания Cron заданий

IT-специалист с нуля

Наш лучший курс для старта в IT. За 2 месяца вы пробуете себя в девяти разных профессиях: мобильной и веб-разработке, тестировании, аналитике и даже Data Science — выберите подходящую и сразу освойте ее.

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *