バックアップファイルが保存されるのを待つディレクトリを監視する永続的なinotifywaitセッション(-mスイッチを使用)を開始し、そのファイルを管理できる別のディレクトリに移動するスクリプトがあります。スクリプトは次のとおりです。
dir=/home/userid/drop/
target=/home/userid/current/
inotifywait -m "$dir" --format '%w%f' -e create |
while read file; do
mv "$file" "$target"
find /home/userid/current -maxdepth 1 -type f -name "*.sql.gz" -print0 | xargs -r0 ls -t | tail -n +5 | tr '\n' '\0' | xargs -r0 rm
done
上記のスクリプトは、ファイルが削除されるとすぐにファイルを移動し、ターゲットディレクトリを最後の4つのファイルまで消去します。これはうまく機能し、crontabエントリ(おそらく午前1時30分)で開始するように設定できます。
ただし、23時間45分後に永久inotifywaitプロセスを終了して再開する前に、他のメンテナンスを実行できる必要があります。したがって、実行中のinotifywaitプロセスを終了し、別のメンテナンスを実行してから、終了するために別のスクリプトを呼び出す別のcrontabエントリを持ちたいと思います。これにより、最初のcrontabエントリからディレクトリ監視を再開できます。
端末セッションにログインせずに無人で実行するには、これが必要です。可能ですか?それでは、他のスクリプトによって開始されたinotifywaitセッションを停止するためにメンテナンススクリプトでどのコマンドを使用する必要がありますか?
どんな指針でも大変感謝いたします。