Что такое cron linux

Обновлено: 21.11.2024

Крон — демон часов, чье имя происходит от Хроноса, греческого слова, обозначающего время. Он позволяет пользователям автоматизировать выполнение команд, сценариев (групп команд) или программ через заданные промежутки времени. Cron — это демон, длительный процесс, который нужно запустить только один раз, и он будет постоянно работать в фоновом режиме. Cron просыпается каждую минуту, проверяет свой список дел, чтобы увидеть, нужно ли выполнять какие-либо запланированные задачи, и если да, то он их выполняет. Если нет, он снова засыпает еще на 59 секунд. Список того, что нужно сделать, называется таблицей cron или сокращенно Crontab.

Чтобы проверить, запущен ли демон cron (crond), введите следующее:

[user_name@local_host ~]$ ps aux | grep crond

корень 3452 0,0 0,4 4444 1116 ? Сб 14 мая 0:00 часов

user_name 16930 0.0 0.2 3724 648 pts/0 S+ 14:16 0:00 grep crond

Первая строка показывает, что crond на самом деле запущен, вторая строка — только что запущенный поиск. Если crond не запущен, это либо потому, что процесс был завершен (убит) с момента последнего запуска компьютера, либо он вообще никогда не запускался. Чтобы демон cron (crond) был добавлен к системным службам, которыми управляет chkconfig, выполните следующие действия от имени пользователя root:

[root@local_host ~]$ chkconfig --добавить crond

Чтобы запустить crond при включении компьютера, выполните следующие действия от имени пользователя root:

[root@local_host ~]$ chkconfig crond on

Теперь, когда демон cron запущен (и настроен на запуск при запуске), мы можем изучить, как его использовать.

Кронтаб (таблица cron) — это программа, используемая для установки, удаления или отображения таблиц, используемых для управления демоном cron. В каталоге /etc вы найдете несколько каталогов, помеченных:

  • cron.hourly
  • cron.daily
  • cron.еженедельно
  • cron.ежемесячно

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

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

Пользовательские файлы crontab определяются в:

Для каждого пользователя создается имя файла, совпадающее с именем учетной записи пользователя. Это позволяет каждому пользователю иметь свой собственный уникальный набор определений заданий cron. Пользователи не редактируют файлы cron напрямую в /var/spool/cron. Вместо этого они выпускают программу под названием crontab, которая, в свою очередь, манипулирует файлами cron.

Команды Crontab

  • crontab -l (Показать текущий crontab.)
  • crontab -d (удалить текущий crontab)
  • crontab -e (изменить текущий crontab или создать его, если он еще не существует)

Если вы раньше не использовали crontab, мы создадим новый файл:

[user_name@local_host ~]$ crontab -e

Кронтаб-файл

Файл crontab имеет Файл crontab имеет пять полей для указания времени запуска команды, за которым следует команда, которая будет выполняться с указанным интервалом.

Общая форма определяется следующим образом:

Минута Час День Месяц DayOfWeek Команда

Операторы Crontab

Существует несколько способов указания нескольких значений в поле:

  • Операция запятая (',') указывает список значений, например: "1,3,4,7,8"
  • Операция тире ('-') указывает диапазон значений, например: "1–6", что эквивалентно "1,2,3,4,5,6"
  • Оператор звездочка ('*') указывает все возможные значения для поля. Например, звездочка в поле времени часа будет эквивалентна "каждый час".
  • Оператор косой черты ('/'), который можно использовать для пропуска заданного количества значений. Например, " * /3" в поле времени часа эквивалентно "0,3,6,9,12,15,18,21"; "\*"
  • указывается "каждый час", но "/3" означает, что только первый, четвертый, седьмой. и используются такие значения, указанные как "*".

Пример Кронтаба

каждые два часа в начале часа
0 * /2 * * * дата

каждые два часа с 23:00 до 23:00. до 7 утра, а в 8 утра
0 23-7/2,8 * * * дата

в 11:00 4 числа и каждый пн, вт, ср
0 11 4 * дата пн-ср

4:00 утра, 1 января
0 4 1 января * дата

раз в час все выходные данные добавляются в файл журнала
0 4 1 янв * дата >>/var/log/messages 2>&1

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

Возможность пользователя использовать crontab контролируется администратором с помощью двух каталогов:

Если ваше имя пользователя указано в файле cron.allow, вы можете запустить crontab. Если файл не существует - вы можете запустить crontab, пока ваше имя пользователя не появится в файле cron.deny. Если cron.deny существует и пуст, все пользователи могут использовать crontab. Если ни один файл не существует, только пользователь root может использовать crontab.

Файлы cron.allow и cron.deny состоят из одного имени пользователя в строке.

Почта Кронтаба

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

> /dev/null 2>&1 означает отправку любого стандартного вывода в /dev/null (мусорную корзину Linux) и перенаправление стандартной ошибки (2) в то же место, что и стандартный вывод (1). Кстати, вместо того, чтобы сбрасывать вывод в /dev/null, его также можно добавить, например, в файлы журнала

Вы также можете отключить уведомления по электронной почте для всех cronjobs определенного пользователя, добавив MAILTO="" в его crontab.

Заира Хира

Если вы работаете в сфере ИТ, вам может потребоваться запланировать различные повторяющиеся задачи в рамках процессов автоматизации.

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

И если вы используете Linux в качестве своей ОС, вы будете использовать что-то, называемое заданием cron, чтобы это произошло.

Что такое хрон?

Cron — это утилита планирования заданий, присутствующая в Unix-подобных системах. Демон crond включает функции cron и работает в фоновом режиме. Cron читает crontab (таблицы cron) для запуска предопределенных сценариев.

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

Для отдельных пользователей служба cron проверяет следующий файл: /var/spool/cron/crontabs

Содержимое /var/spool/cron/crontabs

Что такое задания cron в Linux?

Любая задача, запланированная с помощью cron, называется заданием cron. Задания Cron помогают нам автоматизировать рутинные задачи, выполняемые ежечасно, ежедневно, ежемесячно или ежегодно.

Теперь давайте посмотрим, как работают задания cron.

Как управлять доступом к cron

Чтобы использовать задания cron, администратор должен разрешить добавлять задания cron для пользователей в файле '/etc/cron.allow'.

Если вы получаете подобное сообщение, это означает, что у вас нет разрешения на использование cron.

Добавление задания Cron отклонено для пользователя John.

Чтобы Джон мог использовать cron, укажите его имя в файле '/etc/cron.allow'. Это позволит Джону создавать и редактировать задания cron.

Разрешение Джона в файле cron.allow

Пользователям также можно запретить доступ к заданиям cron, указав их имена пользователей в файле '/etc/cron.d/cron.deny'.

Как добавить задания cron в Linux

Во-первых, чтобы использовать задания cron, необходимо проверить состояние службы cron. Если cron не установлен, вы можете легко загрузить его через менеджер пакетов. Просто используйте это, чтобы проверить:

Синтаксис задания Cron

Crontabs использует следующие флаги для добавления и перечисления заданий cron.

  • crontab -e : редактирует записи crontab, добавляя, удаляя или редактируя задания cron.
  • crontab -l : список всех заданий cron для текущего пользователя.
  • crontab -u имя_пользователя -l : перечислить cron другого пользователя.
  • crontab -u имя_пользователя -e : изменить cron другого пользователя.

Когда вы перечислите cron, вы увидите что-то вроде этого:

В приведенном выше примере

  • * * * * * представляет минуты(ы), часы(а), день(а), месяц(ы), день(а) недели соответственно.
  • sh означает, что сценарий является сценарием bash и должен запускаться из /bin/bash .
  • /path/to/script.sh указывает путь к сценарию.

Ниже приведен краткий обзор синтаксиса задания cron.

Примеры заданий Cron

Ниже приведены некоторые примеры планирования заданий cron.

< /tr>

Ничего страшного, если вы не можете понять все это сразу.Вы можете практиковаться и создавать расписания cron с помощью crontab guru.

Как настроить задание cron

В этом разделе мы рассмотрим пример планирования простого сценария с заданием cron.

<р>2. Сделайте скрипт исполняемым, предоставив ему права на выполнение.

<р>3. Добавьте скрипт в crontab с помощью crontab -e .

Здесь мы запланировали запуск поминутно.

Добавление задания cron в crontab каждую минуту.

<р>4. Проверьте вывод файла date-out.txt. По сценарию системная дата должна выводиться в этот файл каждую минуту.

Вывод нашего задания cron.

Как устранить неполадки cron

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

Во-первых, вы можете попробовать проверить расписание, установленное для cron. Вы можете сделать это с помощью синтаксиса, который вы видели в предыдущих разделах.

<р>2. Проверьте журналы cron.

Сначала вам нужно проверить, запустился ли cron в назначенное время или нет. Вы можете убедиться в этом из журналов cron, расположенных в var/log/cron. В некоторых дистрибутивах журналы можно найти в /var/log/syslog

Если в этих журналах есть запись в нужное время, это означает, что cron запустился в соответствии с установленным вами расписанием.

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

Журналы заданий Cron.

<р>3. Перенаправить вывод cron в файл.

Вы можете перенаправить вывод cron в файл и проверить файл на наличие возможных ошибок.

Подведение итогов

Автоматизация задач, например заданий cron, сокращает объем повторяющейся работы. Это также позволяет машинам автоматически восстанавливаться и работать круглосуточно без вмешательства человека.

Автоматизация в Linux в значительной степени зависит от заданий cron, поэтому вам обязательно нужно изучить cron и поэкспериментировать с ним.

Нет времени на команды? Планирование задач с помощью cron означает, что программы могут работать, но вам не нужно ложиться спать допоздна.

Одна из проблем (среди многих преимуществ) работы системного администратора — выполнение задач, когда вы предпочитаете спать. Например, некоторые задачи (включая регулярно повторяющиеся задачи) необходимо выполнять ночью или в выходные дни, когда ожидается, что никто не будет использовать ресурсы компьютера. У меня нет времени по вечерам запускать команды и скрипты, которые должны работать в нерабочее время. И я не хочу вставать в темную сотню, чтобы начать резервное копирование или крупное обновление.

Вместо этого я использую две служебные утилиты, которые позволяют мне запускать команды, программы и задачи в заранее определенное время. Службы cron и at позволяют системным администраторам планировать выполнение задач в определенное время в будущем. Служба at указывает одноразовую задачу, которая запускается в определенное время. Служба cron может планировать повторяющиеся задачи, например ежедневно, еженедельно или ежемесячно.

В этой статье я расскажу о службе cron и о том, как ее использовать.

Распространенное (и необычное) использование cron

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

  • Системное время (то есть время операционной системы) на многих моих компьютерах устанавливается с помощью протокола сетевого времени (NTP). Хотя NTP устанавливает системное время, он не устанавливает аппаратное время, которое может дрейфовать. Я использую cron для установки аппаратного времени на основе системного времени.
  • У меня также есть программа Bash, которую я запускаю каждое утро и которая создает новое "сообщение дня" (MOTD) на каждом компьютере. Он содержит информацию, такую ​​как использование диска, которая должна быть актуальной, чтобы быть полезной.
  • Многие системные процессы и службы, такие как Logwatch, logrotate и Rootkit Hunter, используют службу cron для ежедневного планирования задач и запуска программ.

Демон crond — это фоновая служба, обеспечивающая работу cron.

Служба cron проверяет наличие файлов в каталогах /var/spool/cron и /etc/cron.d, а также в файле /etc/anacrontab. Содержимое этих файлов определяет задания cron, которые должны запускаться с различными интервалами.Отдельные пользовательские файлы cron расположены в /var/spool/cron, а системные службы и приложения обычно добавляют файлы заданий cron в каталог /etc/cron.d. /etc/anacrontab — это особый случай, который будет рассмотрен далее в этой статье.

Использование crontab

Утилита cron запускается на основе команд, указанных в таблице cron (crontab). Каждый пользователь, включая root, может иметь файл cron. Эти файлы не существуют по умолчанию, но могут быть созданы в каталоге /var/spool/cron с помощью команды crontab -e, которая также используется для редактирования файла cron (см. сценарий ниже). Я настоятельно рекомендую вам не использовать стандартный редактор (например, Vi, Vim, Emacs, Nano или любой из многих других доступных редакторов). Использование команды crontab позволяет не только редактировать команду, но и перезапускать демон crond при сохранении и выходе из редактора. Команда crontab использует Vi в качестве базового редактора, потому что Vi всегда присутствует (даже в самых простых установках).

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

Команда crontab используется для просмотра или редактирования файлов cron.

Первые три строки кода выше задают среду по умолчанию. Среда должна быть настроена на то, что необходимо для данного пользователя, потому что cron не предоставляет никакой среды. Переменная SHELL указывает оболочку, используемую при выполнении команд. В этом примере указана оболочка Bash. Переменная MAILTO задает адрес электронной почты, на который будут отправляться результаты задания cron. Эти электронные письма могут сообщать о статусе задания cron (резервные копии, обновления и т. д.) и состоять из вывода, который вы бы увидели, если бы запускали программу вручную из командной строки. Третья строка устанавливает PATH для среды. Несмотря на то, что путь указан здесь, я всегда добавляю полный путь к каждому исполняемому файлу.

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

Эта строка в файле /etc/crontab запускает сценарий, который выполняет резервное копирование моих систем.

Эта строка запускает мой самописный сценарий оболочки Bash, rsbu, который выполняет резервное копирование всех моих систем. Эта работа начинается в 01:01 (01:01) каждый день. Звездочки (*) в позициях три, четыре и пять в спецификации времени подобны файловым шаблонам или подстановочным знакам для других временных интервалов; они указывают «каждый день месяца», «каждый месяц» и «каждый день недели». Эта строка запускает мои резервные копии дважды; один выполняет резервное копирование на внутренний выделенный жесткий диск для резервного копирования, а другой — на внешний USB-накопитель, который я могу взять с собой в сейф.

Следующая строка устанавливает аппаратные часы на компьютере, используя системные часы в качестве источника точного времени. Эта линия настроена на 5:03 утра (03 05) каждый день.

Эта строка устанавливает аппаратные часы, используя системное время в качестве источника.

Я использовал третье и последнее задание cron (закомментировано) для выполнения обновления dnf или yum в 04:25 в первый день каждого месяца, но я закомментировал его, чтобы оно больше не выполнялось.

Эта строка раньше выполняла ежемесячное обновление, но я закомментировал ее.

Другие приемы планирования

Теперь давайте сделаем кое-что более интересное, чем эти основы. Предположим, вы хотите запускать определенное задание каждый четверг в 15:00:

Эта строка запускает mycronjob.sh каждый четверг в 15:00

Или, возможно, вам нужно запускать ежеквартальные отчеты после окончания каждого квартала. Служба cron не имеет параметра «Последний день месяца», поэтому вместо этого вы можете использовать первый день следующего месяца, как показано ниже. (Это предполагает, что данные, необходимые для отчетов, будут готовы, когда задание будет запущено.)

Это задание cron создает ежеквартальные отчеты в первый день месяца после окончания квартала.

Ниже показано задание, которое выполняется через одну минуту каждого часа с 9:01 до 17:01.

Иногда вам нужно запускать задания в обычное время в обычные рабочие часы.

Я сталкивался с ситуациями, когда мне нужно запускать задание каждые два, три или четыре часа. Этого можно добиться, разделив часы на желаемый интервал, например */3 для каждых трех часов или 6-18/3 для запуска каждые три часа с 6 утра до 6 вечера. Аналогично можно разделить и другие интервалы; например, выражение */15 в позиции минут означает "выполнять задание каждые 15 минут".

Это задание cron выполняется каждые пять минут в течение каждого часа с 8:00 до 17:58

Обратите внимание: выражения деления должны давать в остатке ноль, чтобы задание могло выполняться. Вот почему в этом примере задание запускается каждые пять минут (08:05, 08:10, 08:15 и т. д.).) в четные часы с 8:00 до 18:00, но не в нечетные часы. Например, задание вообще не будет выполняться с 9 часов вечера. до 9:59

Я уверен, что вы можете придумать много других вариантов на основе этих примеров.

Ограничение доступа к cron

Дополнительные ресурсы по Linux

Обычные пользователи с доступом к cron могут совершать ошибки, которые, например, могут привести к перегрузке системных ресурсов (таких как память и процессорное время). Чтобы предотвратить возможное неправильное использование, системный администратор может ограничить доступ пользователей, создав файл /etc/cron.allow, содержащий список всех пользователей, которым разрешено создавать задания cron. Нельзя запретить пользователю root использовать cron.

Поскольку пользователи без полномочий root не могут создавать свои собственные задания cron, пользователю root может потребоваться добавить свои задания cron в корневой crontab. "Но ждать!" ты говоришь. «Разве это не запускает эти задания от имени пользователя root?» Не обязательно. В первом примере в этой статье поле имени пользователя, показанное в комментариях, можно использовать для указания идентификатора пользователя, который должен иметь задание при выполнении. Это предотвращает выполнение заданий указанного пользователя без полномочий root от имени пользователя root. В следующем примере показано определение задания, которое выполняет задание от имени пользователя «студент»:

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

cron.d

В каталоге /etc/cron.d некоторые приложения, такие как SpamAssassin и sysstat, устанавливают файлы cron. Поскольку нет пользователя spamassassin или sysstat, этим программам нужно место для размещения файлов cron, поэтому они помещаются в /etc/cron.d.

Файл /etc/cron.d/sysstat ниже содержит задания cron, относящиеся к отчетам об активности системы (SAR). Эти файлы cron имеют тот же формат, что и пользовательский файл cron.

Пакет sysstat устанавливает файл cron /etc/cron.d/sysstat для запуска программ для SAR.

В файле cron sysstat есть две строки, которые выполняют задачи. Первая строка запускает программу sa1 каждые 10 минут для сбора данных, хранящихся в специальных двоичных файлах в каталоге /var/log/sa. Затем каждую ночь в 23:53 запускается программа sa2 для создания сводки за день.

Советы по планированию

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

В одной системе, которую я администрировал, было около дюжины заданий cron, которые выполнялись каждую ночь, и еще три или четыре задания, которые выполнялись по выходным или в начале месяца. Это было проблемой, потому что, если одновременно выполнялось слишком много заданий — особенно резервное копирование и компиляция — в системе заканчивалась оперативная память и почти заполнялся файл подкачки, что приводило к зависанию системы и падению производительности, так что ничего не делалось. Мы добавили больше памяти и улучшили планирование задач. Мы также удалили задачу, которая была очень плохо написана и использовала большой объем памяти.

Служба crond предполагает, что хост-компьютер работает постоянно. Это означает, что если компьютер выключается в период, когда запланировано выполнение заданий cron, они не будут выполняться до тех пор, пока не будут запланированы в следующий раз. Это может вызвать проблемы, если они являются критическими заданиями cron. К счастью, есть еще один вариант запуска заданий через равные промежутки времени: anacron.

анакрон

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

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

Программа anacron предоставляет несколько простых опций для выполнения регулярно запланированных задач. Просто установите свои скрипты в каталоги /etc/cron.[hourly|daily|weekly|monthly] в зависимости от того, как часто их нужно запускать.

Как это работает? Последовательность проще, чем кажется на первый взгляд.

  1. Служба crond запускает задание cron, указанное в файле /etc/cron.d/0hourly.

Содержимое /etc/cron.d/0hourly запускает сценарии оболочки, расположенные в /etc/cron.hourly.

  1. Задание cron, указанное в файле /etc/cron.d/0hourly, запускает программу run-parts один раз в час.
  2. Программа run-parts запускает все сценарии, расположенные в каталоге /etc/cron.hourly.
  3. Файл /etc/cron.hourly содержит скрипт 0anacron, который запускает программу anacron с помощью показанного здесь файла конфигурации /etdc/anacrontab.

Содержимое файла /etc/anacrontab запускает исполняемые файлы в каталогах cron.[daily|weekly|monthly] в соответствующее время.

  1. Программа anacron запускает программы, расположенные в /etc/cron.daily, один раз в день; он запускает задания, расположенные в /etc/cron.weekly, один раз в неделю, а задания в cron.monthly - один раз в месяц. Обратите внимание на указанное время задержки в каждой строке, которое помогает предотвратить наложение этих заданий друг на друга и других заданий cron.

Вместо того, чтобы помещать полные программы Bash в каталоги cron.X, я устанавливаю их в каталог /usr/local/bin, что позволяет мне легко запускать их из командной строки. Затем я добавляю символическую ссылку в соответствующий каталог cron, например /etc/cron.daily.

Программа anacron не предназначена для запуска программ в определенное время. Скорее, он предназначен для запуска программ с интервалами, которые начинаются в указанное время, например, в 3 часа ночи (см. строку START_HOURS_RANGE в сценарии чуть выше) каждого дня, в воскресенье (в начале недели) и в первый день. месяца. Если какой-либо один или несколько циклов пропущены, anacron запустит пропущенные задания один раз как можно скорее.

Ярлыки

Файл /etc/anacrontab, показанный выше, показывает нам, как мы можем использовать ярлыки для нескольких конкретных и распространенных случаев. Эти сокращения времени, состоящие из одного слова, можно использовать для замены пяти полей, обычно используемых для указания времени. Символ @ используется для обозначения ярлыков для cron. Список ниже, взятый из справочной страницы crontab(5), показывает ярлыки с их эквивалентными значениями.

  • @reboot : однократный запуск после перезагрузки.
  • @yearly : запускать раз в год, т.е. 0 0 1 1 *
  • @annually : запускать раз в год, т.е. 0 0 1 1 *
  • @monthly : запускать раз в месяц, т.е. 0 0 1 * *
  • @weekly : запуск раз в неделю, т.е. 0 0 * * 0
  • @daily : запускать один раз в день, т.е. 0 0 * * *
  • @hourly : запуск раз в час, т.е. 0 * * * *

Эти ярлыки можно использовать в любых файлах crontab, например в /etc/cron.d.

Подробнее об установке ограничений

Большинство этих методов я использую для планирования выполнения задач на своих компьютерах. Все эти задачи должны выполняться с привилегиями root. По моему опыту, обычные пользователи редко нуждаются в работе cron. Одним из случаев был пользователь-разработчик, которому понадобилось задание cron, чтобы запустить ежедневную компиляцию в лаборатории разработки.

Важно ограничить доступ к функциям cron для пользователей без полномочий root. Однако бывают случаи, когда пользователю нужно настроить выполнение задачи в заранее заданное время, и cron может позволить ему это сделать. Многие пользователи не понимают, как правильно настроить эти задачи с помощью cron, и допускают ошибки. Эти ошибки могут быть безобидными, но чаще всего они могут вызвать проблемы. Установив функциональные политики, которые заставляют пользователей взаимодействовать с системным администратором, вероятность того, что отдельные задания cron будут мешать другим пользователям и другим системным функциям, снизится.

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

Дополнительную информацию можно найти на справочных страницах для cron, crontab, anacron, anacrontab и run-parts, где содержится отличная информация и описания того, как работает система cron.

Эта статья была первоначально опубликована в ноябре 2017 года и обновлена, чтобы включить дополнительную информацию.

Демон Cron — это встроенная утилита Linux, которая запускает процессы в вашей системе в запланированное время. Cron читает crontab (таблицы cron) для предопределенных команд и сценариев.

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

В этом руководстве с примерами показано, как настроить задание cron в Linux.

Основной синтаксис Crontab

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

Чтобы настроить задание cron, нам необходимо понять основные элементы, из которых состоит этот синтаксис. Стандартная форма строки crontab выглядит следующим образом:

<р>1. Первые пять полей a b c d e указывают время/дату и периодичность задания.

<р>2. Во втором разделе /directory/command указывает расположение и сценарий, который вы хотите запустить.

<р>3. Вывод конечного сегмента является необязательным. Он определяет, как система уведомляет пользователя о завершении задания.

1. Формат времени задания Cron

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

В таблице ниже приведены возможные значения для полей и пример синтаксиса:

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

Помните, что Cron не нужно перезапускать, чтобы изменения вступили в силу.

Редактировать crontab для другого пользователя

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

Примечание. Если вам нужно запустить задание cron при перезагрузке, обратитесь к нашему руководству Crontab on Boot.

Примеры заданий Cron

При указании заданий используйте звездочку, чтобы указать все значения. Ввод значения в одно из полей запускает команду только для этого значения. Например:

Несмотря на то, что он запускается в 2 часа ночи, он запускается только тогда, когда первое число месяца (0) приходится на среду (4). Если вы измените на следующее:

Команда запускается первого числа каждого месяца в 2 часа ночи. В следующей таблице представлены несколько основных команд, использующих файл /root/backup.sh из наших предыдущих примеров.

Примечание. Ознакомьтесь с сообщением о команде at, альтернативе заданию cron.

Теперь вы хорошо понимаете, как использовать cron для планирования задач в Linux. Используйте примеры, представленные в этом руководстве, для создания и планирования заданий cron в вашей системе. Со временем расширяйте задачи, используя специальные символы, чтобы автоматизировать большинство рутинных задач.

Крон назван в честь греческого слова «Хронос», которое используется для обозначения времени. Это системный процесс, который автоматически выполняет задачи по определенному расписанию. Это набор команд, которые используются для запуска обычных задач планирования. Crontab расшифровывается как «cron table». Это позволяет использовать планировщик заданий, известный как cron, для выполнения задач.

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

Из этого руководства по операционной системе вы узнаете:

Зачем использовать Cronjobs?

Вот причины использования Cronjobs в Linux:

  • Помогает ОС создавать запланированные резервные копии файлов журнала или базы данных.
  • Удалить старые файлы журналов
  • Архивация и очистка таблиц базы данных
  • Отправлять любые уведомления по электронной почте, такие как информационные бюллетени, электронные письма об истечении срока действия пароля.
  • Регулярная очистка кэшированных данных
  • Кронтаб — идеальный вариант для автоматизации заданий Unix.
  • Он используется для автоматизации обслуживания системы.

Как использовать cron в Linux?

Системный пакет Linux содержит полезный планировщик задач под названием crontab. Crontab популярен, потому что его можно запланировать для запуска автоматизированного процесса от имени пользователя root. Таким образом, автоматизированный процесс, работающий от имени пользователя root, упрощает внесение изменений в систему. Вам просто нужно изменить задачу, а затем подождать, пока задача не будет запущена повторно.

Формат Linux Crontab

Crontab для Linux имеет шесть полей. Первые пять полей определяют время и дату выполнения, а шестое поле используется для выполнения команды.

  • Astrics (*): используйте для сопоставления
  • Определить диапазон: позволяет определить диапазон с помощью дефиса, например 1–10, 30–40 или январь-март, пн-ср.
  • Определить несколько диапазонов: позволяет определить различные диапазоны с разделением команд, например апрель-июнь,октябрь-декабрь.

Как добавить/изменить Crontab

Пользователь может редактировать свои задания crontab с помощью следующей команды crontab:

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

Нет необходимости перезапускать ваш crontab, так как он автоматически подхватит ваши изменения, когда вы используете следующую команду.

Читайте также:

Расписание Запланированное значение
5 0 * 8 * В 00:05 в августе.
5 4 * * 6 В 04:05 в воскресенье.
0 22 * ​​* 1-5 В 22:00 каждый день недели с понедельника по пятницу.