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