У меня есть программа, которая выводит некоторые данные, которые я хотел бы выводить на своем терминале один раз в час в течение рабочего дня.
$ crontab -l
0 07-17 * * * /home/dat/scripts/cron.out
Системный журнал сообщает следующее:
(dat) CMD (/home/dat/scripts/cron.exe)
Jun 18 12:02:01 picard CRON[10848]: (CRON) info (No MTA installed, discarding output)
Что мне не хватает?
Ответы:
Грязным способом может быть перенаправление вывода вашей программы в файл pts уже существующего терминала.
Чтобы узнать файл pts, просто введите
tty
командутогда ваш crontab будет:
Другим способом может быть запуск программы в качестве аргумента терминала:
где
display
X-дисплей, на котором вы хотите показать терминал,-H
означает, чтобы терминал оставался открытым после завершения команды. Это создаст каждый раз новый терминал.кронтаб:
если дисплей отсутствует, вы увидите ошибку, зарегистрированную в syslog.
источник
Cron отправляет вам по электронной почте вывод вашего скрипта. К сожалению, Ubuntu по умолчанию не устанавливает локальную почту , поэтому Cron сообщает вам в журналах « MTA не установлен, отбрасывая вывод».
Настройка локальной почты может быть одним из способов решения вашей проблемы. Вместо вывода в терминале вы получите уведомление по электронной почте.
Если вы хотите, чтобы ваша работа cron выводилась на терминал, вам придется перенаправить ее вывод на терминал. Часть перенаправления проста -
но проблема в том, чтобы выяснить, к какому терминалу перенаправить. На это нет универсального ответа, это зависит от того, как вы хотите выбрать терминал из тех, в которые вы вошли.
Для типичных применений уведомление GUI было бы более подходящим. Вы можете использовать
notify-send
. Вам нужно будет установитьDISPLAY
переменную среды .источник
Cron отправляет вывод по почте. Если вы хотите увидеть выходные данные в терминале, вы можете войти в файл и использовать tail -f для просмотра выходных данных в терминале, который вы хотите увидеть в выходных данных.
Вход в файл
0 07-17 * * * /home/dat/scripts/cron.out > /path/to/log.txt 2> /path/to/error.txt
Альтернативные способы входа:
echo output > log.txt
Или вы можете использовать скрипт- обертку, описанный ниже.Пример программы и сценария оболочки:
Пример прогона 1:
Пример прогона 2:
Просмотр вывода в терминале:
Теперь, когда вы регистрируете как стандартную ошибку, так и стандартную ошибку в файле, в любом терминале вы можете запустить
tail -f
один или оба файла, напримерtail -f log.txt
илиtail -f log.txt error.txt
около того, что tail будет отслеживать или, скорее, следовать файлам изменений для внесения изменений. хвостовая страницаРегистрация файлов, добавленных впоследствии:
Если позднее log.txt или error.txt добавляются из вашей программы или из другого терминала, например
$ echo "more output" >> log.txt
, вывод отображается на работающем терминале$ tail -f log.txt error.txt
Кроме того, в
$ echo code red >> error.txt
результате:источник