Что такое cron? Как настроить периодическую задачу?

cron — сервис Linux для запуска команд и скриптов по расписанию. Задания пользователя редактируют через crontab -e; каждая строка содержит время запуска и команду, которую нужно выполнить.
Подробный ответ

Что такое cron

Cron — это планировщик задач в Linux. Он запускает команды и скрипты в заданное время: каждую минуту, каждый час, ежедневно, по дням недели или по более сложному расписанию.

Как открыть расписание пользователя

crontab -e
crontab -l

crontab -e открывает расписание для редактирования, а crontab -l показывает уже добавленные задания.

Структура cron-выражения

* * * * * command
│ │ │ │ │
│ │ │ │ └── день недели: 0-7
│ │ │ └──── месяц: 1-12
│ │ └────── день месяца: 1-31
│ └──────── час: 0-23
└────────── минута: 0-59

Примеры

0 2 * * * /home/alex/scripts/backup.sh
*/15 * * * * /home/alex/scripts/check-service.sh
0 9 * * 1-5 /home/alex/scripts/report.sh >> /var/log/report.log 2>&1
  • первый пример запускает backup каждый день в 02:00;

  • второй запускает проверку каждые 15 минут;

  • третий запускает отчёт по будням в 09:00 и записывает стандартный вывод и ошибки в лог.

Что важно учитывать

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

Проверка скрипта

Скрипт должен быть исполняемым и иметь корректный shebang.

#!/usr/bin/env bash

chmod +x /home/alex/scripts/backup.sh
/home/alex/scripts/backup.sh

Как ответить на собеседовании

Cron запускает задачи по расписанию. Я добавляю их через crontab -e, где указываю пять полей времени и команду. В cron использую абсолютные пути, учитываю ограниченное окружение и направляю stdout и stderr в логи, чтобы можно было диагностировать ошибки.

Оцени свой прогресс

Честно оцени своё понимание этого вопроса, чтобы мы могли построить твой учебный трек максимально эффективно.
Читать в блоге