0Pricing
Linux Server Deployment & SSH Mastery · Урок

Планирование задач с помощью Cron

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

«Планирование задач с помощью Cron» — бесплатный урок Linux Server Deployment & SSH Mastery на CoddyKit. Это урок 3 из 4. Ты можешь прочитать весь урок бесплатно ниже — а потом практиковать его прямо в браузере с встроенным редактором кода и ИИ-репетитором 24/7. Это часть пути обучения Linux Server Deployment & SSH Mastery, и твой прогресс синхронизируется между веб-версией и приложением CoddyKit. Курс Linux Server Deployment & SSH Mastery содержит 4 уроков всего.

Зачем автоматизировать задачи сервера

Ручные задачи на сервере могут быть однообразными и приводить к ошибкам из-за человеческого фактора. Автоматизация помогает экономить время и гарантирует единообразное выполнение задач.

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

Здесь пригодятся инструменты планирования! Они позволяют серверу автоматически выполнять задачи в определённое время или через заданные интервалы, освобождая вас для более важных дел.

Знакомство с cron: планировщиком сервера

Планировщик cron — основной инструмент Linux для планирования задач. Это своего рода персональный помощник сервера, который следит за автоматическим запуском команд или сценариев в фоновом режиме в заранее заданное время.

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

Редактирование crontab

Для управления личными заданиями cron используется команда crontab.

  • Чтобы отредактировать файл crontab, введите: crontab -e
  • Чтобы вывести список текущих заданий cron, введите: crontab -l
  • Чтобы удалить все задания cron, введите: crontab -r (используйте с осторожностью!)

При выполнении crontab -e файл crontab откроется в используемом по умолчанию текстовом редакторе, часто nano или vi.

Синтаксис crontab: поля времени

Каждая строка crontab представляет одно задание cron и соответствует определённому шаблону. Сначала идут пять полей времени, за ними — команда для выполнения.

Формат:

minute hour day_of_month month day_of_week command
  • Минута: 0–59
  • Час: 0–23 (0 — полночь)
  • День месяца: 1–31
  • Месяц: 1–12 (или Jan–Dec)
  • День недели: 0–7 (0 или 7 — воскресенье, 1 — понедельник)

Синтаксис crontab: звёздочки и диапазоны

Точные числа нужны не всегда. Cron поддерживает специальные символы для более гибкого планирования:

  • * (звёздочка): соответствует любому возможному значению этого поля. Например, * в поле минут означает «каждую минуту».
  • - (дефис): задаёт диапазон. Например, 9-17 в поле часов означает «с 9-го по 17-й час».
  • , (запятая): задаёт список значений. Например, Mon,Wed,Fri или 1,3,5 для дней недели.
  • / (косая черта): задаёт шаг. Например, */5 в поле минут означает «каждые 5 минут».

Синтаксис crontab: практические примеры

Рассмотрим несколько распространённых примеров, чтобы закрепить изученное:

  • * * * * * /path/to/script.sh
    Запускается каждую минуту.
  • 0 3 * * * /usr/bin/backup.sh
    Запускается ежедневно в 3:00 AM.
  • 0 9-17 * * 1-5 /usr/local/bin/check_service.py
    Запускается каждый час с 9:00 AM до 5:00 PM с понедельника по пятницу.
  • */15 * * * * echo "Hello, CoddyKit!"
    Запускается каждые 15 минут.

Не забудьте заменить /path/to/script.sh фактическим путём к команде или сценарию.

Специальные строки crontab

Для часто используемых вариантов планирования Cron предоставляет специальные строки, которые читать проще, чем синтаксис из пяти полей:

  • @reboot: Запуск один раз при загрузке системы.
  • @hourly: Запуск один раз в час, в начале часа.
  • @daily: Запуск один раз в день, в полночь.
  • @weekly: Запуск один раз в неделю, в полночь в воскресенье.
  • @monthly: Запуск один раз в месяц, в полночь первого дня месяца.
  • @yearly (или @annually): Запуск один раз в год, в полночь 1 января.

Эти варианты отлично подходят для простых повторяющихся задач.

Переменные окружения и пути

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

Чтобы избежать проблем:

  • Всегда используйте абсолютные пути к командам и сценариям (например, /usr/bin/php вместо php).
  • Можно определить переменную PATH прямо в файле crontab, например: PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin
  • Также можно задать переменные окружения непосредственно в сценарии.

Обработка вывода и ведение журналов

По умолчанию cron пытается отправить по электронной почте весь вывод (stdout и stderr) задания cron пользователю, которому принадлежит crontab. Если почтовая система не настроена, этот вывод может потеряться или переполнить журнальные файлы.

Рекомендуется явно перенаправлять вывод:

  • Чтобы отбросить весь вывод: command > /dev/null 2>&1
  • Чтобы добавить вывод в журнальный файл: command >> /var/log/myjob.log 2>&1

Часть 2>&1 перенаправляет стандартный поток ошибок (2) туда же, куда направлен стандартный вывод (1).

Общесистемный cron и пользовательские crontab

До этого мы рассматривали личные пользовательские crontab, которыми управляют с помощью crontab -e. Они отлично подходят для задач отдельных пользователей.

Для общесистемных задач администраторы часто используют:

  • /etc/crontab: основной системный crontab, позволяющий запускать задачи от имени определённых пользователей.
  • /etc/cron.d/: каталог для отдельных файлов cron, которые часто устанавливаются приложениями.
  • /etc/cron.hourly/, /etc/cron.daily/, и т. д.: каталоги, куда помещают сценарии для запуска системным cron через соответствующие интервалы.

Эти общесистемные возможности обеспечивают более гибкое управление автоматизацией сервера.

Проверьте знания о cron

Вы изучили основы синтаксиса crontab. Давайте проверим, сможете ли вы расшифровать это задание cron.

Итоги: автоматизация с помощью cron

Теперь вы освоили основы планирования задач с помощью Cron!

Мы рассмотрели:

  • Что такое Cron: планировщик заданий, работающий по времени.
  • Crontab: личный файл для определения заданий cron.
  • Синтаксис: пять полей времени и специальные символы (*, -, ,, /).
  • Специальные строки: сокращения, такие как @hourly и @reboot.
  • Рекомендации: использование абсолютных путей и обработка вывода.

С Cron вы можете автоматизировать рутинные задачи, обеспечивая бесперебойную и эффективную работу сервера!

Часто задаваемые вопросы

Урок «Планирование задач с помощью Cron» бесплатный?

Да — полный текст урока «Планирование задач с помощью Cron» бесплатно доступен здесь в веб-версии. Чтобы практиковать его интерактивно (встроенный редактор кода и ИИ-репетитор 24/7) и разблокировать остальной курс Linux Server Deployment & SSH Mastery, подпишись на CoddyKit PRO. Курс Linux Server Deployment & SSH Mastery содержит 4 уроков всего.

Чему я научусь в уроке «Планирование задач с помощью Cron»?

Автоматизируйте регулярно выполняемые задачи сервера, создавая и управляя заданиями cron, чтобы скрипты и команды запускались через заданные интервалы. Ты практикуешь Linux Server Deployment & SSH Mastery с помощью реального кода, который запускаешь прямо в браузере, и ИИ-репетитор 24/7 отвечает на твои вопросы во время урока.

Нужен ли мне опыт, чтобы начать Linux Server Deployment & SSH Mastery?

Предыдущий опыт не требуется. Linux Server Deployment & SSH Mastery на CoddyKit структурирован для всех уровней — от новичков до продвинутых, поэтому ты можешь начать отсюда или с самого начала и учиться в своем темпе. Это урок 3 из 4.

Сколько времени занимает урок «Планирование задач с помощью Cron»?

Большинство уроков CoddyKit занимают около 5–10 минут. Каждый из них компактный и интерактивный, поэтому ты постоянно делаешь прогресс и продолжаешь с того же места в веб-версии и приложении.

Можно ли писать и запускать код в этом уроке Linux Server Deployment & SSH Mastery?

Да. Каждый урок Linux Server Deployment & SSH Mastery включает встроенный редактор кода, поэтому ты пишешь и запускаешь реальный код прямо в браузере и получаешь моментальную обратную связь от AI — локальная установка не требуется.

Все уроки этого курса

  1. Управление пользователями и группами
  2. Мониторинг системных процессов
  3. Планирование задач с помощью Cron
  4. Управление системными службами с помощью systemd
← Назад к Linux Server Deployment & SSH Mastery