Планирование задач с помощью 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 — локальная установка не требуется.
Все уроки этого курса
- Управление пользователями и группами
- Мониторинг системных процессов
- Планирование задач с помощью Cron
- Управление системными службами с помощью systemd