Linux Labs

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

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

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

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

Что видит задание cron

Задание запускается без терминала. Что оно напечатает, ты на экране не увидишь.

cron выполняет команду через /bin/sh от владельца таблицы, в его домашнем каталоге. Каждый запуск cron записывает в журнал: sudo journalctl -u cron покажет строку CRON[…]: (student) CMD (команда).

Вывод задания — и ошибки тоже — cron отправляет владельцу таблицы почтой. Почтовой службы на учебной машине нет, и в журнале после запуска появляется (CRON) info (No MTA installed, discarding output): вывод выброшен. Поэтому задание, которое молча не работает, проверяют по журналу cron, а саму команду — набрав её в терминале.

Один знак cron читает по-своему: % в команде он превращает в перевод строки и всё после первого % отдаёт команде на вход. Чтобы % дошёл до команды, его пишут как \%.

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

После запуска задания в журнале cron такие строки. Что значит вторая?

CRON[1227]: (student) CMD (/usr/local/bin/report.sh)
CRON[1226]: (CRON) info (No MTA installed, discarding output)
  • Запуск был — о нём строка CMD. No MTA installed говорит о выводе задания: отправить его почтой некуда.

  • Эту строку cron пишет, когда у задания был вывод. Задание без вывода её не оставляет, а ошибка — тоже вывод.

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

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

  • Задание выполняется через /bin/sh от владельца таблицы, каждый запуск виден в sudo journalctl -u cron.
  • Вывод и ошибки задания cron выбрасывает: No MTA installed, discarding output.
  • % в команде cron означает перевод строки, в команду его передают как \%.
Ubuntu 24.04
Загрузка…