スクリプト内の何かが tput
を呼び出しています バイナリ。 tput
$TERM
の検査を試みます 変数を使用して現在の端末を決定し、正しい制御シーケンスを生成できるようにします。 cron の実行中に端末がないため、tput
からそのエラーが発生します .
TERM
を手動で割り当てることもできます cron ジョブへの値 (おそらく dumb
またはそれに似たもの) または (これはおそらくより良い解決策です) tput
を呼び出しているものを見つけることができます その呼び出しを削除してください。
cron デーモンは、独自のシェルで「root」ユーザーによって実行されます。デフォルトでは、cron は、スクリプトを実行しているユーザーに送信されるシステム メールを追加します (これが、システム メールで送信者が「root」と表示される理由です)。 「ユーザー」は、crontab を設定するときにログインしたユーザーです。メールには、コンソールとエラー メッセージが含まれます。 Ubuntu では、メール ファイルは /var/mail/<username>
で表示できます。 .
$TERM
がない場合 変数が設定されている場合、cron は tput: No value for $TERM and no -T specified
を出力します メールファイルにエラーがあります。これらのエラーを停止するには、$TERM
を設定します TERM=dumb
を使用した変数 (または xterm
など、システムで使用可能な別の端末 ) crontab で。 toe
コマンドは、現在のシステムの terminfo 定義を表示します。そのコマンドがない場合は、/usr/share/terminfo
で生データを確認できます ほとんどの Linux システムで。
エラーを停止しても、コンソール メッセージが添付されたシステム メールを受信する場合があります。このファイルは時間の経過とともにログのようにいっぱいになるため、これらのメッセージを停止することをお勧めします。 cron システム メールを停止するには、MAILTO
を設定します。 MAILTO=""
を使用した変数
したがって、crontab は次のようになります:
MAILTO=""
TERM=xterm
* * * * * sh /path/to/myscript.sh
「crontab -l」を使用して、(サインインしているユーザーの) crontab を表示できます。