cronがスケジュールされたジョブを「スキップする」理由

cronがスケジュールされたジョブを「スキップする」理由

私のサーバーには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`

おすすめ記事