cronジョブの実行結果を取得する方法

cronジョブの実行結果を取得する方法

私はsimpleWorld Javaプログラムを作成し、対応するjarファイルを作成しました。

cronジョブをテストするには、次の行を含むcrontab.txtファイルを作成します。

50 12 27 4 1 java -jar HelloWorld.jar

そしてそれを保存しました。

Unixマシンのコマンドプロンプトで、私は次のように書きました:

crontab crontab.txt

私のUnixコンピュータではこのプログラムの結果を見ることはできません。 SysOutライン「Hello World」を取得する方法。

つまり、正常に実行されたかどうかはどうすればわかりますか?

答え1

最良の(「正しい」)方法は、出力をリダイレクトするようにcrontabでコマンドを変更することです。

50 12 27 4 1 java -jar HelloWorld.jar >> HelloWorld.output 2>&1

ただし、通常、cronジョブがリダイレクトされていない出力を生成すると、その cron出力はキャプチャされ、ユーザーにメールで送信されます。入力しmailて結果を確認してください。 (コンピュータに別のメールシステムがある場合はそれを使用できます。)

答え2

cronジョブで出力が生成されると、cronはローカルの電子メール機能を介してユーザーに送信します。 cronジョブがゼロ以外(つまりエラー)状態を返す場合、cronは状況に関する電子メールを送信します。クローンジョブが出力なしで完了し、ステータスが0(つまり成功)であるか、まだ実行中であることを確認するための信頼できる方法はありません。

一部のディストリビューションでは、デフォルトのインストールにローカル電子メール機能が設定されていません。通常、これを行うのは簡単です。次のいずれかをインストールしてください。MTAPostfixやEximなどのパッケージの設定方法を尋ねる場合は、「ローカル配送のみ」または同様のオプションを選択してください。メールをローカルに転送するのではなく、SMTP経由でリモートサーバーに送信したい場合は、これには最小限のMTAがあります。

電子メールに加えて、コマンドラインからリダイレクトを使用してジョブをファイルに出力するようにスケジュールすることもできます。

50 12 27 4 1 java -jar HelloWorld.jar >~/log/HelloWorld-$(date -d \%Y\%m\%d-\%H\%M\%S).log 2>&1

関連情報