背景:毎日ノートブックの一部のファイルをバックアップしたいのですが、時にはノートブックが数日連続で終了することがあります。
バックアップをジョブとしてスケジュールcron
し、それを使用して欠落しているジョブを実行してみましたが、どのように機能するのかanacron
わかりません。anacron
たとえば、ノートブックが終了してから3日後にノートブックを起動すると、anacron
3つの欠落バックアップジョブがすべて実行されますか?これが真であれば、anacron
一定時間(この場合は1日以上)遅延ジョブの実行を停止する最良の方法は何ですか?
答え1
毎日バックアップを実行するジョブがあり、anacron
システムが3日間ダウンした場合は、anacron
このジョブが実行されます。一度4日目にシステムがオンラインになったとき。
詳細には、anacron
指定された頻度(日単位)で定期的に繰り返されるコマンドを指定できます。呼び出されるとanacron
(起動時または事前定義された時間中に発生する可能性があります)、設定ファイルからタスクリストを読みます/etc/anacrontab
。各ジョブについて、anacron
過去 n 日以内にジョブが実行されたことを確認します。日常業務の場合、今日が最後の日になります。この間にジョブが実行されなかった場合、anacron はジョブを実行します。
ジョブの実行が完了すると、anacron
以下のファイルに実行日が記録されます/var/spool/anacron
。このファイルは、次の日にanacronが呼び出されたときの作業状態を確認するために使用されます。
anacron
最後の実行から経過した日数と設定された実行頻度のみが照会されるため、そのタスクが複数回実行されるという問題はありません。
/etc/anacrontab
毎日のanacron操作は、次の構文を使用して設定ファイルで設定できます。
1 15 backup-job /path/to/backup/script.sh
1は指定されたコマンドを実行する頻度(日)、15はジョブ実行に追加される遅延時間(分)、「backup-job」は識別子、「/path/to/backup/script.sh」は実行時間です。コマンドを実行します。あなたは見ることができますman 8 anacron
そしてman 5 anacrontab
詳細については。
答え2
これを行う最善の方法は、バックアップの開始時にロックファイルを作成し、スクリプトの最後から削除することです。もちろん、ロックファイルを作成する前にそのファイルが存在することを確認し、存在する場合はスクリプトを停止する必要があります。外部でスクリプトが終了し、ロックファイルがまだ存在することを慎重に確認してください。