
以前は CRON を使用して問題なく実行されていた Mysql のバックアップ スクリプトがあります。systemd タイマーを使用するように移行しました。スクリプトは、次のコマンドを使用して、コピーの前に前の週のファイルを削除することから始まります。
find /home/NAS2/$SRVER/backups/$_DAY -type f -exec rm {} \;
メッセージ ログに表示される内容は次のとおりです。
percona_backup: rm: cannot remove ‘/home/NAS2/o71/backups/Monday/mysql/proc.ibd’: No such file or directory
SELinux は強制に設定されています。同じスクリプトのバリエーションを実行しているサーバーが 3 台ありますが、このエラーで失敗するのは 2 台だけです。すべてはこの 1 つのコマンドに帰着します。
では、なぜこれは CRON としては機能するのに、systemd タイマーでは失敗するのでしょうか? 1 台のサーバーでは機能するのに、他の 2 台のサーバーでは同じコマンドが失敗するのはなぜでしょうか?
答え1
すでに削除されたファイルの削除に失敗しても問題ない場合は、--force
にオプションを追加できますrm
。ドキュメントからman rm
:
存在しないファイルと引数を無視し、プロンプトを表示しない