Quelque chose dans le script appelle le tput binaire. tput tente d'inspecter le $TERM variable pour déterminer le terminal actuel afin qu'il puisse produire les séquences de contrôle correctes. Il n'y a pas de terminal lorsque cron est en cours d'exécution, vous obtenez donc cette erreur de tput .
Vous pouvez soit attribuer manuellement un TERM valeur à la tâche cron (probablement dumb ou quelque chose de similaire) ou (et c'est probablement la meilleure solution) vous pouvez découvrir ce qui appelle tput et supprimer cet appel.
Le démon cron est exécuté par l'utilisateur 'root' dans son propre shell. Par défaut, cron ajoutera un courrier système envoyé à l'utilisateur exécutant le script (c'est pourquoi vous voyez l'expéditeur en tant que "root" dans le courrier système). L''utilisateur' est l'utilisateur sous lequel vous étiez connecté lors de la configuration de la crontab. Le courrier contiendra des messages de console et d'erreur. Sur Ubuntu, le fichier mail est visible à /var/mail/<username> .
Si non $TERM variable est définie, cron émettra un tput: No value for $TERM and no -T specified erreur dans le fichier courrier. Pour arrêter ces erreurs, définissez le $TERM variable utilisant TERM=dumb (ou un autre terminal disponible dans votre système, comme xterm ) dans la crontab. Le toe La commande vous montrera les définitions terminfo sur le système actuel. Si vous n'avez pas cette commande, vous pouvez voir les données brutes dans /usr/share/terminfo sur la plupart des systèmes Linux.
Même si vous avez arrêté les erreurs, vous pouvez toujours recevoir un courrier système ajouté aux messages de la console. Ce fichier se remplira comme un journal au fil du temps, vous pouvez donc arrêter ces messages. Pour arrêter le courrier du système cron, définissez le MAILTO variable utilisant MAILTO=""
Ainsi, votre crontab pourrait ressembler à :
MAILTO=""
TERM=xterm
* * * * * sh /path/to/myscript.sh
Vous pouvez afficher la crontab (pour l'utilisateur avec lequel vous êtes connecté) avec 'crontab -l'.