Qualcosa nello script chiama tput binario. tput tenta di ispezionare il $TERM variabile per determinare il terminale corrente in modo che possa produrre le sequenze di controllo corrette. Non c'è un terminale quando cron è in esecuzione, quindi ottieni quell'errore da tput .
Puoi assegnare manualmente un TERM value al cron job (probabilmente dumb o qualcosa di simile) o (e questa è probabilmente la soluzione migliore) puoi scoprire cosa sta chiamando tput e rimuovi quella chiamata.
Il demone cron è eseguito dall'utente 'root' nella propria shell. Per impostazione predefinita, cron aggiungerà una mail di sistema inviata all'utente che esegue lo script (ecco perché vedi il mittente come 'root' nella mail di sistema). L'"utente" è l'utente con cui hai effettuato l'accesso quando hai impostato il crontab. La posta conterrà messaggi di console e di errore. Su Ubuntu, il file di posta è visualizzabile in /var/mail/<username> .
Se nessun $TERM variabile è impostata, cron emetterà un tput: No value for $TERM and no -T specified errore nel file di posta. Per interrompere questi errori, imposta $TERM variabile usando TERM=dumb (o un altro terminale disponibile nel tuo sistema, come xterm ) nel crontab. Il toe comando ti mostrerà le definizioni di terminfo sul sistema corrente. Se ti manca quel comando, puoi vedere i dati grezzi in /usr/share/terminfo sulla maggior parte dei sistemi Linux.
Anche se hai interrotto gli errori, potresti comunque ricevere la posta di sistema aggiunta con i messaggi della console. Questo file si riempirà come un registro nel tempo, quindi potresti voler interrompere questi messaggi. Per interrompere la posta del sistema cron, imposta MAILTO variabile usando MAILTO=""
Quindi il tuo crontab potrebbe essere simile a:
MAILTO=""
TERM=xterm
* * * * * sh /path/to/myscript.sh
Puoi visualizzare il crontab (per l'utente con cui hai effettuato l'accesso) con 'crontab -l'.