30日以上経過したログをクリーンアップするために毎日実行されるアンインストール操作があります。
find /dir/app/logs -mtime +30 -exec rm -f {} \;
私はcronからサードパーティのカレンダー製品であるAutomicに仕事を移しています。この操作を移動した後、「該当するファイルやディレクトリはありません」というエラーが発生し続けます。エラーを受け取ったら、プロンプトでfindコマンドを実行してください。 -exec rm -f{}\; を追加しないと結果は返されず、操作は成功します。簡単に言えば、エラーを再現することはできません。
ジョブは次のコマンドを実行して実行されます。
ssh user@server "find /dir/app/logs -mtime +30 -exec rm -f {} \;"
リモートサーバーを対象としています。
さまざまなソリューションをテストしましたが、運がありませんでした。最初は、コマンドは-fなしで実行されます。私が知っている限り、-fを追加するとエラーは抑制されますが、そのようなことは起こりません。 -exec rm {} \;を-deleteに置き換えようとしましたが、それも役に立ちませんでした。
現在、ここで提案されているように、\;を+に変更することをテストしています。
何が起こっているのかについての洞察を提供していただきありがとうございます。
答え1
しばらく休憩してより多くのインターネット検索を行った後、このソリューションで問題を解決できます。
find /usr/dir/logs/ -mindepth 1 -mtime +45 -delete
find
親ディレクトリを含めrm
て最初に削除しようとしているようです。これは時々機能し、ファイル/ディレクトリの欠落エラーが発生する理由を説明します。-delete
素晴らしい作品。追加すると、親-mindepth 1
アイテムをスキップします。
削除しないサブディレクトリを維持するには、「-type f
表示専用ファイルの保存」ファイルを追加します。また、特定のファイルを無視する必要がある状況もあります。この場合はうまくいくようです。
find /usr/dir/logs/ -mindepth 1 -type f \( ! -name "ignoreme*" \) -mtime +30 -delete