Post

Crontab Cheat Sheet - Практический гайд с примерами

Crontab Cheat Sheet - Практический гайд с примерами

Введение

Crontab - это мощная утилита для Unix-подобных операционных систем, которая позволяет планировать и автоматизировать задачи с заранее определенными интервалами. Она использует демон cron для выполнения команд или сценариев в соответствии с заданным расписанием. Эта шпаргалка содержит обзор синтаксиса crontab и демонстрирует практические примеры, которые помогут вам эффективно планировать повторяющиеся задачи.

Введение

Разница между Cron, Crontab и Cron Job

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

ElementLinux NameMeaning
DaemoncrondPronounced “demon” or “day-mon”. These are Linux background system processes.
TablecrontabYou write rows to this table when entering a crontab command. Each * asterisk represents a segment of time and a corresponding column in each row.
JobCron JobThe specific task to be performed described in a row, paired with its designated time id.

Cron

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

Crontab

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

Cron Job

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

Таким образом, Cron - это системный демон, ответственный за выполнение запланированных задач, Crontab - это файл, используемый для определения запланированных задач для отдельных пользователей, а Cron Job относится к конкретной задаче, запланированной с использованием файла crontab.

Crontab: Синтаксис

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

1
2
3
4
5
6
7
8
* * * * * command_to_be_executed
┬ ┬ ┬ ┬ ┬
│ │ │ │ │
│ │ │ │ └─ Day of the week (0 - 7) (Sunday = 0 or 7)
│ │ │ └───── Month (1 - 12)
│ │ └────────── Day of the month (1 - 31)
│ └─────────────── Hour (0 - 23)
└──────────────────── Minute (0 - 59)

Приведенный ниже фрагмент кода представляет содержимое файла /etc/crontab. Этот файл является общесистемным файлом crontab в Linux, который содержит запланированные задачи для различных пользователей. Все начинается с определения оболочки (/bin/bash) и системного пути поиска (PATH).

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

Этот файл служит справочным материалом и руководством по настройке заданий cron в системе Linux.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
cat /etc/crontab

SHELL=/bin/bash
PATH=/sbin:/bin:/usr/sbin:/usr/bin
MAILTO=root

# For details see man 4 crontabs

# Example of job definition:
# .---------------- minute (0 - 59)
# |  .------------- hour (0 - 23)
# |  |  .---------- day of month (1 - 31)
# |  |  |  .------- month (1 - 12) OR jan,feb,mar,apr ...
# |  |  |  |  .---- day of week (0 - 6) (Sunday=0 or 7) OR sun,mon,tue,wed,thu,fri,sat
# |  |  |  |  |
# *  *  *  *  * user-name  command to be executed

Каждое поле может быть задано в виде отдельного значения, списка значений, разделенных запятыми, диапазона или звездочки (*) для обозначения всех возможных значений. Вот несколько примеров:

  • * указывает все возможные значения для этого поля.
  • 5,10,15 обозначает значения 5, 10 и 15.
  • 1-5 представляет собой диапазон от 1 до 5.

Практические примеры

Пример 1: Запуск сценария каждый час

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

1
0 * * * * /path/to/script.sh

При этом в начале каждого часа выполняется скрипт, расположенный по адресу /path/to/script.sh.

Пример 2: Запуск сценария каждый день в определённое время

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

1
30 9 * * * /path/to/script.sh

При этом скрипт выполняется в /path/to/script.sh каждый день в 9:30 утра.

Пример 3: Запуск сценария в определённые дни недели

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

1
0 10 * * 1,3,5 /path/to/script.sh

При этом скрипт выполняется в /path/to/script.sh в 10:00 утра каждый понедельник, среду и пятницу.

Пример 4: Запуск сценария каждый месяц

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

1
0 12 15 * * /path/to/script.sh

При этом скрипт запускается в /path/to/script.sh в 12:00 15-го числа каждого месяца.

Пример 5: Запуск сценария с регулярными интервалами

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

1
*/10 * * * * /path/to/script.sh

При этом скрипт выполняется по адресу /path/to/script.sh каждые 10 минут.

Управление записями в Crontab

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

  • crontab -e - Открывает файл crontab для редактирования.
  • crontab -l - Показывает существующие записи crontab.
  • crontab -r - Удаляем все из crontab.

Вывод

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

Ссылки на источники

This post is licensed under CC BY 4.0 by the author.