Использование Cron для автоматизации задач на Ubuntu LTS / CentOS

Введение

В дистрибутивах Linux (Ubuntu, CentOS, RHEL) и других Unix-подобных операционных системах имеется демон планирования заданий по времени, известный как Cron. Cron отлично подходит для автоматизации работы, связанной с обслуживанием, поскольку он работает в фоновом режиме, а запланированные с его помощью действия, известные как «задания cron», выполняются автоматически.

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

Предварительные условия

Чтобы выполнить это руководство, вам понадобится доступ к серверу под управлением Ubuntu LTS или CentOS.

Независимо от того, какой компьютер вы используете для выполнения этой инструкции, на нем должен быть установлен не root-пользователь, имеющий root-доступ. Чтобы настроить One, следуйте нашему руководству по созданию нового пользователя с правами sudo- в Ubuntu LTS & CentOS 7.

Шаг 1: Установка Cron

Почти все дистрибутивы Linux имеют свой собственный cron, установленный по умолчанию. Однако если вы используете машину Ubuntu, на которой cron не установлен, вы можете установить его с помощью APT.

Перед установкой cron на машину обновите индекс локальных пакетов компьютера:

Ubuntu

$ sudo apt update

CentOS

$ sudo yum update

Затем установите cron с помощью следующей команды:

Ubuntu

$ sudo apt install cron

CentOS

$ sudo yum install cron

Вам также нужно убедиться, что он настроен на работу в фоновом режиме:

$ sudo systemctl enable cron
root@Ubuntu:~# sudo systemctl enable cron
Synchronizing state of cron.service with SysV service script with /lib/systemd/systemd-sysv-install.
Executing: /lib/systemd/systemd-sysv-install enable cron

Шаг 2: Как работает Cron

Задания Cron документируются и управляются в специальном документе, называемом crontab. Каждая учетная запись в системе может иметь свой собственный crontab, в котором она может планировать задания, который хранится в разделе /var/spool/cron/crontabs/ .

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

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

1-е 2-й 3-й 4-й 5-й
* * * * *
ID Минута Час День-Дата Месяц Название дня
Разрешенные значения 0-59 0-23 1-31 1-12 или ЯНВАРЬ-ДЕК 0-6 или САН-САТ

Каждая задача, запланированная в crontab, имеет следующую структуру:

$ * * * * *  <command> 
# OR 
$ * * * * * <path/to/script>
Пример

Эта команда задает запуск задания в 00:00 [midnight] каждое воскресенье

0 0 * * 0 curl webhi.com
Примечание
* : In cron expressions, an asterisk is a wildcard variable that represents “all.” Thus, a task scheduled with * * * * * will run every minute of every hour of every day of every month.
, : Commas break up scheduling values to form a list. If you want to have a task run at the beginning and middle of every hour, rather than writing out two separate tasks
- : A hyphen represents a range of values in the schedule field.
/ : You can use a forward slash with an asterisk to express a step value.
Note: It is important to note that you cannot express step values indiscriminately; you must use integers that divide evenly within the range permitted by the field in question. In the "hours" column, for example, you could only enter 1, 2, 3, 4, 5, 6, 7, or 12 after a forward slash.

Вот еще несколько примеров использования компонента планирования cron:

* * * * * - Every minute.
12 * * * * - 12 minutes of after every hour.
(0,15,30,45 * * * *) / (*/15 * * * *) - Every 15 minutes.
0 4 * * * -Every day at 4:00 AM.
0 4 * * 2-4 -Every Tuesday, Wednesday, and Thursday at 4AM.
20,40 */8 * 7-12 * -Every day throughout the last six months of the year, on the 20th and 40th minutes of the 8 hour.

Шаг 3: Редактирование кронтабов

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

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

$ crontab -e
no crontab for bob - using an empty one
Select an editor.  To change later, run 'select-editor'.
  1. /bin/nano        <---- easiest
  2. /usr/bin/vim.basic
  3. /usr/bin/vim.tiny
  4. /bin/ed
Choose 1-4 [1]:

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

Когда вы используете crontab -e в будущем он будет автоматически открывать ваш кронтаб в этом текстовом редакторе.

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

# Edit this file to introduce tasks to be run by cron.
#
# Each task to run has to be defined through a single line
# indicating with different fields when the task will be run
# and what command to run for the task
#
# To define the time you can provide concrete values for
# minute (m), hour (h), day of month (dom), month (mon),
# and day of week (dow) or use '*' in these fields (for 'any').
#
# Notice that tasks will be started based on the cron's system
# daemon's notion of time and timezones.
#
# Output of the crontab jobs (including errors) is sent through
# email to the user the crontab file belongs to (unless redirected).
#
# For example, you can run a backup of all your user accounts
# at 5 a.m every week with:
# 0 5 * * 1 tar -zcf /var/backups/home.tgz /home/
#
# For more information see the manual pages of crontab(5) and cron(8)
#
# m h  dom mon dow   command

Вы можете использовать следующую команду, чтобы просмотреть содержимое вашего кронтаба и не редактировать его:

$ crontab -l

Вы можете очистить свой crontab , выполнив следующую команду:

Warning: The following command will not prompt you for confirmation that you wish to delete your crontab. Run it only if you are certain you want to delete it.
$ crontab -r

Заключение

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

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

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