Задание запускается без терминала. Что оно напечатает, ты на экране не увидишь.
cron выполняет команду через /bin/sh от владельца таблицы, в его домашнем каталоге. Каждый запуск cron записывает в журнал: sudo journalctl -u cron покажет строку CRON[…]: (student) CMD (команда).
Вывод задания — и ошибки тоже — cron отправляет владельцу таблицы почтой. Почтовой службы на учебной машине нет, и в журнале после запуска появляется (CRON) info (No MTA installed, discarding output): вывод выброшен. Поэтому задание, которое молча не работает, проверяют по журналу cron, а саму команду — набрав её в терминале.
Один знак cron читает по-своему: % в команде он превращает в перевод строки и всё после первого % отдаёт команде на вход. Чтобы % дошёл до команды, его пишут как \%.
После запуска задания в журнале 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 означает перевод строки, в команду его передают как\%.