Algo en el script llama al tput
binario. tput
intenta inspeccionar el $TERM
variable para determinar el terminal actual para que pueda producir las secuencias de control correctas. No hay una terminal cuando cron se está ejecutando, por lo que obtiene ese error de tput
.
Puede asignar manualmente un TERM
valor para el trabajo cron (probablemente dumb
o algo similar a eso) o (y esta es probablemente la mejor solución) puede averiguar qué está llamando a tput
y elimina esa llamada.
El demonio cron es ejecutado por el usuario 'root' en su propio shell. De forma predeterminada, cron agregará un correo del sistema enviado al usuario que ejecuta el script (es por eso que ve al remitente como 'raíz' en el correo del sistema). El 'usuario' es el usuario con el que inició sesión cuando configuró el crontab. El correo contendrá mensajes de consola y de error. En Ubuntu, el archivo de correo se puede ver en /var/mail/<username>
.
Si no $TERM
se establece la variable, cron emitirá un tput: No value for $TERM and no -T specified
error en el archivo de correo. Para detener estos errores, configure el $TERM
variable usando TERM=dumb
(u otra terminal disponible en su sistema, como xterm
) en el crontab. El toe
El comando le mostrará las definiciones terminfo en el sistema actual. Si no tiene ese comando, puede ver los datos sin procesar en /usr/share/terminfo
en la mayoría de los sistemas Linux.
Aunque haya detenido los errores, aún puede recibir un correo del sistema adjunto con mensajes de la consola. Este archivo se llenará como un registro con el tiempo, por lo que es posible que desee detener estos mensajes. Para detener el correo del sistema cron, configure el MAILTO
variable usando MAILTO=""
Entonces su crontab podría verse así:
MAILTO=""
TERM=xterm
* * * * * sh /path/to/myscript.sh
Puede ver el crontab (para el usuario con el que inició sesión) con 'crontab -l'.