Программирование

cron

Что такое cron?

cron — старая установка времени в системах Unix. Список называется crontab. Каждая строка — пять полей времени и одна команда: минута, час, день месяца, месяц и день недели. Звезда значит каждое значение этого поля. Работа открывается от имени твоего пользователя. Окно она не открывает. Результат может уйти в почту или в файл. Таймер systemd может сделать похожую работу, но это не сам cron.

Для чего нужен cron?

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

  • Каждую ночь снимать копию базы
  • Удалять старый временный файл
  • Отправлять утренний отчёт
  • Запускать проверку раз в час

Что можно делать с cron?

Через cron команду привязывают к календарю. Он не проверяет, верна ли команда. Если путь или право неверны, работа может тихо упасть. Экрана нет, поэтому результат нужно писать в файл. Та же работа может начаться снова, пока прошлая не кончилась.

Сложно ли освоить cron?

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

Плюсы и ограничения

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

Основные понятия

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

  • Звезда значит каждое значение
  • 0 3 * * * — каждую ночь в 03:00
  • crontab -l показывает список
  • Результат сам на экран не выходит

Короткий пример

Эта строка вызывает команду копии каждую ночь в 03:00. Сама команда здесь не написана, только её путь.

0 3 * * * /usr/local/bin/backup

Частые вопросы

  • cron — язык программирования? Нет. Он вызывает готовую команду, когда приходит время.
  • Когда работа падает, это видно на экране? Нет. Окна нет. Результат нужно писать в файл или журнал.
  • Звезда значит только понедельник? Нет. Звезда значит каждое значение этого поля.