"tput: нет значения для $TERM и no-t указано" ошибка, регистрируемая процессом CRON
у нас есть сценарий оболочки, который запускается CRON. Сценарий оболочки, в свою очередь, запускает скрипт python, который загружает файлы с FTP-сервера, а затем запускает процессор журнала java на этих файлах. Процесс работает нормально, за исключением того, что я продолжаю получать электронные письма CRON, даже если нет ошибки. По крайней мере, я думаю, что ошибки нет. Письмо cron имеет две строки, из которых одна из строк
tput: No value for $TERM and no -T specified
после изучения немного, я обнаружил, что это как-то связано с установкой $Термин переменной. Я не знаю, как это сделать. Любая помощь будет оценена. Спасибо!
2 ответов
что-то в скрипте называет tput
бинарный. tput
пытается проверить $TERM
переменная для определения текущего терминала, чтобы он мог производить правильные управляющие последовательности. Нет терминала, когда cron runninng поэтому вы получаете эту ошибку из tput
.
вы можете вручную назначить TERM
значение задания cron (вероятно dumb
или что-то подобное) или (и это, вероятно, лучшее решение) вы можете узнать, что вызывает tput
и уберите этот звонок.
демон cron запускается пользователем root в собственной оболочке. По умолчанию cron добавит системную почту, отправленную пользователю, выполняющему скрипт (поэтому вы видите отправителя как "root" в системной почте). "Пользователь" - это пользователь, в котором вы вошли в систему при настройке crontab. Письмо будет содержать консоль и сообщения об ошибках. На Ubuntu почтовый файл можно просмотреть в /var/mail/<username>
.
, если не $TERM
переменная установлена, cron испустит tput: No value for $TERM and no -T specified
ошибка в почтовом файле. Остановить это ошибки, установите $TERM
переменная с помощью TERM=dumb
(или другой доступный терминал в вашей системе, как xterm
) в crontab. The toe
команда покажет вам определения terminfo в текущей системе. Если вам не хватает этой команды, вы можете увидеть необработанные данные в /usr/share/terminfo
на большинстве систем Linux.
даже если вы остановили ошибки, вы все равно можете получить добавленную системную почту с консольными сообщениями. Этот файл будет заполняться как журнал с течением времени, поэтому вы можете остановить их сообщения. Чтобы остановить cron system mail, установите MAILTO
переменная с помощью MAILTO=""
поэтому ваш crontab может выглядеть так:
MAILTO=""
TERM=xterm
* * * * * sh /path/to/myscript.sh
вы можете просмотреть crontab (для пользователя, в котором вы вошли) с помощью 'crontab-l'.