Cron ジョブが NodeJS スクリプトの実行に失敗する

Cron ジョブが NodeJS スクリプトの実行に失敗する

出力をログに記録したい cron ジョブがあります。cron ファイル ( crontab -e) は次のとおりです。

0 7 * * * node $HOME/server/task.js >> $HOME/server/log.txt

cron タスクは次のように呼び出されます:

$ grep CRON /var/log/syslog
Nov  4 07:00:01 ip-... CRON[0000]: (bitnami) CMD (node $HOME/server/task.js >> $HOME/server/task.txt)
Nov  4 07:00:01 ip-... CRON[0000]: (CRON) info (No MTA installed, discarding output)

エラーのある行は、メールがインストールされていません、でもそうしたくもない。

NodeJS タスクの最初の行で が使用されている場合、出力ファイルは空になりますconsole.log()

cronジョブが実行されないことを確認しました。

何が間違っているのかをデバッグし、cron を実行して、結果をファイルに保存するにはどうすればよいでしょうか?

答え1

デフォルトでは、cronジョブの出力はスクリプトを実行しているユーザーにメールで送信されます。MTAがインストールされていませんシステムにメールエージェントがインストールされていないためです。

最初の syslog 行に見られるように、スクリプトは実際に実行されています。ここでの問題は、標準出力にリダイレクトされない出力にあります。

そこで、cron ジョブを編集してみてください:

   0 7 * * * node $HOME/server/task.js >> $HOME/server/log.txt 2>&1

関連情報