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