Linux Labs

Пакеты, службы, журналы / Ступень 11 из 13

Задания cron и таймеры systemd

Не запущена Запускается обычно ~20 с
Выйти из урока

Шаг 2 из 8 · теория · 5 мин

Строка расписания cron

Расписания cron лежат в двух местах: в личных таблицах пользователей и в системных файлах. Строка в них устроена почти одинаково.

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

Поле Значения
минута 0–59
час 0–23
день месяца 1–31
месяц 1–12
день недели 0–7, 0 и 7 — воскресенье

* в поле — любое значение, */10 — каждое десятое, 1-5 — диапазон, 1,15 — список. 15 2 * * * — каждый день в 02:15, * * * * * — каждую минуту.

Личная таблица — crontab пользователя: crontab -l печатает её, crontab -e открывает в редакторе (в первый раз спросит, каким: 1 — nano). Команды из неё выполняются от владельца таблицы. В системных файлах /etc/crontab и /etc/cron.d/* между временем и командой стоит ещё поле — имя пользователя, от которого запускать.

Проверь себя 1 вопрос

Эту строку из /etc/cron.d скопировали как есть в свою таблицу через crontab -e. Что будет в 02:15?

15 2 * * * student /usr/local/bin/backup.sh
  • crontab проверяет формат времени, а слово после него считает началом команды. Строка с пятью полями и командой для него правильная.

  • В личной таблице после пяти полей сразу идёт команда. cron выполнит student /usr/local/bin/backup.sh, и оболочка будет искать программу student.

Поле пользователя есть в /etc/crontab и /etc/cron.d, а в личной таблице на его месте начинается команда. Ошибку cron выбросит вместе с выводом, а запуск будет виден в sudo journalctl -u cron.

Главное в шаге

  • Строка cron — пять полей времени и команда; * значит «любое».
  • Личная таблица — crontab -l и crontab -e, команды выполняются от её владельца.
  • В /etc/crontab и /etc/cron.d после времени стоит имя пользователя.
Ubuntu 24.04
Загрузка…