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

Cron — это утилита для планирования задач в операционной системе Linux. Она позволяет автоматизировать выполнение различных задач в определенное время или по расписанию. В этом руководстве мы рассмотрим основы использования cron, создание cron-заданий и управление ими в операционной системе НАЙС ОС.

Основы cron

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

Создание и редактирование crontab

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

Пример задания crontab

Добавьте следующее задание в файл crontab:

*/15 * * * * /usr/bin/python3 /home/user/scripts/myscript.py

Это задание будет выполняться каждые 15 минут. Разберем структуру cron-задания:

  • */15 — Минуты: каждые 15 минут.
  • * — Часы: каждый час.
  • * — Дни месяца: каждый день.
  • * — Месяцы: каждый месяц.
  • * — Дни недели: каждый день недели.
  • /usr/bin/python3 /home/user/scripts/myscript.py — Команда, которая будет выполнена.

Основные команды cron

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

  • crontab -e — Редактирование crontab текущего пользователя.
  • crontab -l — Просмотр текущих cron-заданий пользователя.
  • crontab -r — Удаление всех cron-заданий пользователя.
  • sudo crontab -e — Редактирование crontab для пользователя root.
  • sudo crontab -l — Просмотр cron-заданий для пользователя root.

Формат расписания cron

Расписание cron-заданий задается с помощью пяти полей:

* * * * * команда
  • Минуты (0-59)
  • Часы (0-23)
  • Дни месяца (1-31)
  • Месяцы (1-12)
  • Дни недели (0-7, где 0 и 7 — воскресенье)

Примеры расписания:

  • 0 0 * * * /path/to/command — Выполнение команды ежедневно в полночь.
  • 30 14 * * 1-5 /path/to/command — Выполнение команды в 14:30 с понедельника по пятницу.
  • 0 22 15 * * /path/to/command — Выполнение команды в 22:00 15 числа каждого месяца.

Перенаправление вывода cron-заданий

По умолчанию вывод команд cron-заданий отправляется на email пользователя. Чтобы перенаправить вывод в файл, используйте перенаправление вывода.

Пример перенаправления вывода

0 0 * * * /path/to/command >> /path/to/logfile 2>&1

Эта команда перенаправит стандартный вывод и вывод ошибок в файл /path/to/logfile.

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

Системный crontab находится в файле /etc/crontab. В отличие от пользовательского crontab, системный crontab имеет дополнительное поле для указания пользователя, от имени которого будет выполняться задание.

Пример задания в системном crontab

0 0 * * * root /path/to/command

Это задание будет выполняться ежедневно в полночь от имени пользователя root.

Использование каталогов cron

В НАЙС ОС также можно использовать каталоги /etc/cron.hourly, /etc/cron.daily, /etc/cron.weekly и /etc/cron.monthly для выполнения скриптов с соответствующей периодичностью.

Пример использования каталогов cron

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

sudo nano /etc/cron.daily/mydailyjob

Добавьте следующий контент:

#!/bin/bash
/path/to/command

Сделайте скрипт исполняемым:

sudo chmod +x /etc/cron.daily/mydailyjob

Проверка и отладка cron-заданий

Для проверки и отладки cron-заданий можно использовать команды crontab -l для просмотра текущих заданий и проверять логи cron в файле /var/log/cron или /var/log/syslog в зависимости от конфигурации вашей системы.

Пример просмотра логов cron

sudo tail -f /var/log/cron

Эта команда будет выводить последние записи из логов cron в режиме реального времени.

Использование cron в НАЙС ОС позволяет автоматизировать выполнение задач по расписанию, что облегчает управление системными задачами и скриптами. Следование изложенным выше шагам поможет вам эффективно создавать и управлять cron-заданиями в вашей системе.