Cron и crontab, объяснение

Lucain опубликованный некоторое время назад отличный учебник по cron и crontab этим, я думаю, стоит поделиться. Cron - это своего рода эквивалент запланированных задач в Windows, только то, что он обрабатывается с терминала. Те, кто предпочитает визуальный интерфейс для достижения той же цели, могут это увидеть. другая статья.

Что такое cron?

Название cron происходит от греческого chronos, что означает «время». В операционной системе Unix cron - это обычный диспетчер фоновых процессов (демон), который запускает процессы или сценарии через регулярные промежутки времени (например, каждую минуту, день, неделю или месяц). Процессы, которые должны быть выполнены, и время, в которое они должны быть выполнены, указаны в файле crontab.

Как это работает?

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

Теме статьи:
Учебное пособие: установка пакетов .tar.gz и .tar.bz2

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

Crontab - это простой текстовый файл, в котором хранится список команд, которые должны выполняться в указанное пользователем время. Crontab проверит дату и время выполнения сценария или команды, разрешения на выполнение и сделает это в фоновом режиме. У каждого пользователя может быть свой собственный файл crontab, фактически / etc / crontab предполагается, что это файл crontab пользователя root, когда обычные пользователи (и даже root) хотят сгенерировать свой собственный файл crontab, мы будем использовать команду crontab.

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

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

Начнем с простого примера.

Мы собираемся автоматизировать обновление системы, чтобы избавиться от раздражающего «Мне всегда нужно обновляться, и мне это не нравится!»

как
Теме статьи:
Команды для ознакомления с системой (идентификация оборудования и некоторых конфигураций программного обеспечения)

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

#! / bin / bash # пример обновления сценария # выберите свой дистрибутив # debian-ubuntu # apt-get update & apt-get -y upgrade #fedora #yum -y update #Arch #pacman --noconfirm -Syu

Удалите символ # из строки вашего дистрибутива. Если это Ubuntu / Debian, он начинается с apt-get.

Мы сохраняем сценарий как update.sh (например, в домашнем каталоге сценариев). Мы меняем права на выполнение указанного скрипта на:

chmod a + x ~ / скрипты / update.sh

Мы запускаем скрипт несколько раз, чтобы убедиться, что все работает нормально, мы модифицируем то, что необходимо (он не должен содержать ошибок, иначе cron будет только повторять ошибку снова и снова). Теперь добавим задачу в наш crontab.

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

Мы выполняем редакцию crontab с помощью crontab -e, в некоторых дистрибутивах (например, Ubuntu) он дает нам возможность выбрать нужный текстовый редактор, в остальном нам остается vi. Файл crontab будет выглядеть примерно так.

# mh dom mon dow пользовательская команда

где:

  • m соответствует минуте выполнения скрипта, значение варьируется от 0 до 59
  • h точное время обрабатывается в 24-часовом формате, значения варьируются от 0 до 23, где 0 означает 12:00 полночь.
  • дом относится к дню месяца, например, вы можете указать 15, если хотите запускать каждые 15 дней
  • Доу означает день недели, он может быть числовым (от 0 до 7, где 0 и 7 - воскресенье) или первыми тремя буквами дня на английском языке: пн, вт, ср, чт, пт, сб, вс.
  • пользователь определяет пользователя, который будет выполнять команду, это может быть root или другой пользователь, если у них есть разрешения на выполнение скрипта.
  • команду относится к команде или абсолютному пути выполняемого сценария, например: /home/usuario/scripts/update.sh, если он вызывает сценарий, он должен быть исполняемым

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

15 10 * * * пользователь /home/user/scripts/update.sh

Он будет запускать скрипт update.sh каждый день в 10:15 утра.

15 22 * * * пользователь /home/user/scripts/update.sh

Он будет запускать скрипт update.sh каждый день в 10:15.

00 10 * * 0 root apt-get -y update Пользователь root

Он будет запускать обновление каждое воскресенье в 10:00.

45 10 * * sun root apt-get -y обновление

Пользователь root будет запускать обновление каждое воскресенье (вс) в 10:45.

30 7 20 11 * пользователь /home/usuario/scripts/update.sh

20 ноября в 7:30 пользователь запустит скрипт

30 7 11 11 sun пользователь /home/usuario/scripts/pastel_con_velitas.sh

11 ноября в 7:30 утра, в воскресенье, пользователь будет отмечать своего системного администратора (то есть меня).

01 * * * * пользователь /home/usuario/scripts/molestorecordatorio.sh

Раздражающее напоминание каждую минуту, каждый час каждый день (НЕ рекомендуется).

С ними все еще можно справиться специальные диапазоны:

30 17 * * 1,2,3,4,5

В 5:30 дня каждый день с понедельника по пятницу.

00 12 1,15,28 * *

В 12 часов дня каждого первого, пятнадцатого и 28 числа каждого месяца (идеально для расчета заработной платы)

Если это сбивает с толку, crontab обрабатывает специальные строки для определения этих диапазонов.

@reboot Запускать один раз при запуске
@yearly запускается только раз в год: 0 0 1 1 *
@ ежегодно то же, что и @yearly
@monthly запускается раз в месяц, первый день: 0 0 1 * *
@weekly Weekly первая минута первого часа недели. 0 0 * * 0 ″.
@daily ежедневно, в 12:00 A.M. 0 0 * * *
@ полночь то же, что и @daily
@hourly в первую минуту каждого часа: 0 * * * *

Его использование очень простое.

@hourly user /home/user/scripts/molestorecordatorio.sh @monthly user /home/user/scripts/backup.sh @daily root apt-get update && apt-get -y upgrade

Последний, но тем не менее важный:

Управление заданиями Cron

crontab файл

Замените существующий файл crontab пользовательским файлом

кронтаб -e

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

crontab -l

Список всех задач crontab пользователя

кронтаб -d

Удалить crontab пользователя

crontab -c каталог

Определяет каталог crontab пользователя (он должен иметь права пользователя на запись и выполнение)

crontab -u пользователь

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

$ sudo crontab -l -u root $ sudo crontab -e user2 #crontab -d -u user

Этот инструмент, как и многие другие, можно увидеть более подробно и подробно в:

Спасибо, Люкайн!