Как использовать Cron и Crontab в Linux для планирования задач на серверах

Используйте Cron и Crontab в Linux для планирования задач на серверах

Вы когда-нибудь пытались запланировать повторяющуюся задачу на своем сервере Linux и не знали, как это сделать? Инструменты cron и crontab, доступные по умолчанию в системах Linux, позволят вам выполнить определенную задачу (или несколько) за определенное время, и это то, что мы сможем запрограммировать с точностью до минут то, что мы хотим выполнить. и когда мы этого хотим. бегать. Сегодня мы собираемся подробно объяснить, как работают Cron и Crontab, чтобы вы могли правильно управлять своими серверами.

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

Различия между Cron и Crontab

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

Что такое Cron

Cron - это демон (фоновый процесс), который запускается с момента загрузки операционной системы. Cron будет отвечать за проверку наличия какой-либо задачи (задания), которая должна быть выполнена, в соответствии со временем, настроенным в самой операционной системе. Очень важно, чтобы время было правильно настроено, а также часовой пояс, иначе выполнение Cron не будет соответствовать нашим настройкам.

Чтобы убедиться, что наша операционная система настроена правильно, очень важно, чтобы вы автоматически получали время с существующих серверов NTP (Network Time Protocol). Чтобы проверить правильность времени в нашей операционной системе, в каком часовом поясе мы находимся и правильно ли синхронизированы системные часы с серверами NTP, мы можем выполнить следующую команду:

timedatectlМы должны увидеть что-то вроде следующего:

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

timedatectl set-timezone Europe/MadridПри установке операционной системы Linux нужные нам NTP-серверы настраиваются автоматически, в случае сбоя или если мы хотим изменить эти NTP-серверы, мы можем сделать это, установив соответствующую службу и настроив ее в / etc / ntp. .conf.

В зависимости от дистрибутива Cron начинает использовать /etc/rc.d/ or /etc/init.d папки и каждую минуту проверяет / etc / crontab or  / var / spool / cron файлы для возможных казней, которые у нас могут быть. запрограммирован.

Что такое Кронтаб

Crontab - это текстовый файл, это файл со специальным содержимым, специально разработанный для правильного чтения Cron и продолжения выполнения, которое мы запрограммировали. Crontab имеет список со всеми сценариями, которые должны быть выполнены, как правило, каждый пользователь системы имеет свой собственный файл Crontab, таким образом, каждый пользователь может планировать свои собственные повторяющиеся задачи независимо, без необходимости для нас всегда переходить к пользователь-администратор. Таким образом, любой пользователь (включая администраторов) может запланировать повторяющиеся задачи для выполнения различных операций.

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

Добавить задачи в Crontab

Исходя из того, что мы можем выполнять задачи, в первую очередь, мы собираемся настроить очень простой скрипт, который мы назовем query.sh, мы поместим этот скрипт на наш «Рабочий стол» или в «Документы», мы будем возможность напрямую запустить текстовый редактор «nano» в том месте, где мы хотим его разместить:

nano consulta.shСодержание сценария будет следующим:

#!/bin/bashsudo ls -l / > archivoResultado.txt

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

chmod ugo+x consulta.shЭтот аспект очень важен, иначе команда никогда не будет выполнена.

Пришло время отредактировать файл с задачами. Для этого воспользуемся командой crontab -e. Находим следующую структуру:

Linux-cron-crontab-добавить периодические задачи

5 звездочек и команда на выполнение. Каждая из 5 звездочек означает:

  • м: минута
  • ч: час
  • вс: день недели
  • пн: месяц
  • доу: день месяца

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

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

Если мы хотим выполнять запрос script.sh каждый день в 7 часов дня, нам нужно будет указать строку в crontab следующим образом:

00 19 * * * usuario /ubicacion/del/script/consulta.shЕсли мы хотим бегать каждое воскресенье в 7 часов дня:

00 19 * * 0 usuario /ubicacion/del/script/consulta.shЗапускайте скрипт каждые 4 февраля в 7:XNUMX:

00 19 4 2 * usuario /ubicacion/del/script/consulta.shНадо сказать, что в Linux есть некоторые текстовые строки, зарезервированные для выполнения процессов в определенные периоды в самом Crontab, это будет очень полезно:

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

Хотя мы уже говорили вам, каким будет формат, при использовании crontab -e эти термины можно использовать для определения периода.

Управление вакансиями cron

Работа Crontab очень проста, как мы видели, теперь мы собираемся научить вас некоторым основным командам для управления работой самого Crontab в операционных системах Linux.

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

crontab archivoДля редактирования существующего в данный момент файла используется команда, которую мы уже видели в этой статье:

crontab -eПеречислите все существующие задачи в crontab пользователя:

crontab -lУдалите настроенный crontab:

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

crontab -c dirИнструкция по работе с crontab других существующих пользователей в системе:

crontab -u usuarioКак видите, планирование выполнения задач несложно и может быть выполнено быстро, если все, что упомянуто в этом руководстве, ясно.