Etwas im Skript ruft tput
auf binär. tput
versucht, $TERM
zu inspizieren -Variable, um das aktuelle Terminal zu bestimmen, damit es die richtigen Steuersequenzen erzeugen kann. Es gibt kein Terminal, wenn Cron läuft, also erhalten Sie diesen Fehler von tput
.
Sie können entweder manuell einen TERM
zuweisen Wert an den Cronjob (wahrscheinlich dumb
oder so ähnlich) oder (und das ist wahrscheinlich die bessere Lösung) Sie können herausfinden, was tput
aufruft und diesen Anruf entfernen.
Der Cron-Daemon wird vom Benutzer „root“ in seiner eigenen Shell ausgeführt. Standardmäßig hängt cron eine Systemmail an, die an den Benutzer gesendet wird, der das Skript ausführt (deshalb sehen Sie den Absender als 'root' in der Systemmail). Der 'Benutzer' ist der Benutzer, als der Sie beim Setzen der Crontab angemeldet waren. Die Mail enthält Konsolen- und Fehlermeldungen. Unter Ubuntu ist die Maildatei unter /var/mail/<username>
sichtbar .
Wenn nein $TERM
Variable gesetzt ist, gibt Cron ein tput: No value for $TERM and no -T specified
aus Fehler in der Maildatei. Um diese Fehler zu stoppen, setzen Sie den $TERM
Variable mit TERM=dumb
(oder ein anderes verfügbares Terminal in Ihrem System, wie xterm
) in der Crontab. Die toe
Der Befehl zeigt Ihnen die terminfo-Definitionen auf dem aktuellen System. Wenn Ihnen dieser Befehl fehlt, können Sie die Rohdaten in /usr/share/terminfo
sehen auf den meisten Linux-Systemen.
Auch wenn Sie die Fehler behoben haben, erhalten Sie möglicherweise immer noch angehängte Systemmails mit Konsolenmeldungen. Diese Datei füllt sich im Laufe der Zeit wie ein Protokoll, daher möchten Sie diese Nachrichten möglicherweise stoppen. Um die Mail des Cron-Systems zu stoppen, setzen Sie den MAILTO
Variable mit MAILTO=""
Ihre Crontab könnte also so aussehen:
MAILTO=""
TERM=xterm
* * * * * sh /path/to/myscript.sh
Sie können die Crontab (für den Benutzer, als der Sie angemeldet sind) mit 'crontab -l' anzeigen.