3つの異なるディレクトリにあるcronジョブを使用して、3日以上経過したファイルを削除する必要があります。 (これらの3つのディレクトリは、親ディレクトリの子です/a/b/c/1
&/a/b/c/2
&/a/b/c/3
)これはcrontabの1行で実行できますか?
これは十分に簡単です(ただし、作成時間は特別なツールを備えた特定のファイルシステムでのみ使用できるため、変更日から3日以上経過していることに注意してください)。
find /a/b/c/1 /a/b/c/2 -type f -mtime +3 #-delete
削除するファイルが見つかったことを確認したら、#
の前に-delete
を削除します。
Cronで実行するには、おそらく実行可能スクリプトを作成し(ファイルの先頭行にShebang-#!bin/sh
を追加し、chmod a+x
で実行可能にする)、適切なcron
に配置します。 /etc/cron.daily
または/etc/cron.weekly
などのディレクトリ。もちろん、より具体的なスケジュールは必要なく、これらのディレクトリがディストリビューションに存在することが条件です。
以下に示すように、find
の-delete
オプションは移植性があまり高くありません。 POSIX互換のアプローチは次のようになります。
find /a/b/c/1 /a/b/c/2 -type f -mtime +3 #-exec rm {} +
適切なファイルがあることを確認したら、もう一度#
を削除します。
以下の StéphaneChazelasコメント から引用するには:
-exec rm {} +
には-delete
(利用可能な場合)にはない競合状態の脆弱性があることに注意してください。したがって、他のユーザーが書き込み可能なディレクトリでは使用しないでください。一部の検索には、これらの脆弱性を軽減する-execdir
もあります。
tmpwatch
を使用した方がずっと良いでしょう
tmpwatch recursively removes files which haven't been accessed for a given time. Normally, it's used to clean up directories which are used for temporary holding space such as /tmp.