質問 :backup.sh シェル スクリプトを作成し、それを crontab に追加して毎日実行しました。バックアップ cron スクリプト ジョブが正常に実行されたかどうかを確認するにはどうすればよいですか?また、backup.sh シェル スクリプト内にいくつかの echo ステートメントがあります。スクリプトが cron ジョブとして実行されたときに、スクリプトの出力をログ ファイルに保存するにはどうすればよいですか?
回答 :毎日深夜に実行するために、以下に示すように crontab に backup.sh を追加したとします。
$ crontab -e 59 23 * * * /home/john/bin/backup.sh
このジョブが正常に実行されたかどうかを確認するには、システムで実行されるすべての cron ジョブに関する情報が含まれている /var/log/cron ファイルを確認してください。次の出力からわかるように、john の cron ジョブは正常に実行されました。
$ tail /var/log/cron Oct 8 22:00:00 dev-db crond[18340]: (root) CMD (/bin/sh /home/root/bin/system_check &) Oct 8 23:00:00 dev-db crond[20348]: (oracle) CMD (/bin/sh /home/oracle/bin/cleanup.sh &) Oct 8 23:59:00 dev-db crond[20399]: (john) CMD (/bin/sh /home/john/bin/backup.sh &)
cron ログには次の情報が含まれます:
- タイムスタンプ – cron ジョブが実行された日時
- ホスト名 – サーバーのホスト名 (dev-db など)
- cron デーモン名と PID。たとえば、crond[20399]
- ユーザー名 – この cron ジョブが実行されたユーザー名。例:ジョン。
- CMD – これに続くものは、その時点で実行された実際のコマンドです。
backup.sh 内に echo ステートメントがある場合は、それらをファイルに記録することをお勧めします。一般に、backup.sh cron スクリプトが何らかの出力 (エラーを含む) をスローする場合、それらをログ ファイルに記録することをお勧めします。これを行うには、crontab エントリを変更し、以下に示すように出力とエラーのリダイレクトを追加します。
$ crontab -e 59 23 * * * /home/john/bin/backup.sh > /home/john/logs/backup.log 2>&1
上記では:
- > /home/john/logs/backup.log backup.sh スクリプトの標準出力が backup.log ファイルにリダイレクトされることを示します。
- 2>&1 標準エラー (2>) が、標準出力 (&1) が指す同じファイル記述子にリダイレクトされることを示します。
- したがって、標準出力とエラーの両方が /home/john/logs/backup.log にリダイレクトされます