私のサーバーにはcrontabとしてスケジュールされた3つのジョブがあり、2番目のジョブは自動的には実行されません。
\# m h dom mon dow command
*/5 * * * * ~/dbCron.sh
00 09 * * * ~/dbCron_daily_backup.sh <--------- this is skipping
55 23 * * * ~/backup_logs.sh && ~/clear_logs.sh
それでは、タイムリーに失敗することなくタスクを実行できるソリューションは何ですか?
ベストアンサー1
スクリプトは実行中ですが失敗します。スクリプトの絶対パス(例: "/home/yourid/bin/dbCron_daily_backup.sh")を使用し、すべてのコマンドで絶対パスを使用するようにスクリプトを編集/変更します。環境に問題がある可能性があります。これは、スクリプトの上部から適切な環境構成をインポートすることで解決できます。
cronjobの動作を監視/監視できるようにログディレクトリを作成します。
mkdir /home/yourid/log/
これはcrontabの動作を記録するために使用できるイディオムです(タスクを記録する場所があると仮定)。これは標準出力と標準エラーをキャプチャします。
#periodic db work,
*/5 * * * * (cd /home/yourid/; bin/dbCron.sh) 2>&1 >> /home/yourid/log/dbcron.log
#db daily backup
00 09 * * * (cd /home/yourid; bin/dbCron_daily_backup.sh) 2>&1 >> /home/yourid/log/dbdailybackup.log
#db nightly cleanup
55 23 * * * (cd /home/yourid/; bin/backup_logs.sh && bin/clear_logs.sh) 2>&1 >> /home/yourid/log/dbnightlycleanup.log
#log system health,
0 * * * * (cd /opt/myapp/;util/DiskCheck.pl) 2>&1 >> /home/yourid/log/health.log
進行状況を記録するために、スクリプトの開始と終了に日付/時刻を含むメッセージを印刷できます。
#!/bin/bash
echo "begin $0 " `/bin/date +%y%m%d%H%M%S`
echo do stuff
echo "done $0 " `/bin/date +%y%m%d%H%M%S`