"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'.