3 つの異なるディレクトリで cron ジョブを使用して、3 日以上経過したファイルを削除する必要があります。 (この3つのディレクトリは親ディレクトリ&&/a/b/c/1
の/a/b/c/2
サブディレクトリです/a/b/c/3
。)crontabで1行でこれを実行できますか?
答え1
これは簡単です(作成時間は特別なツールを使用する一部のファイルシステムでのみ利用可能であるため、3日前の修正時間に基づいています)。
find /a/b/c/1 /a/b/c/2 -type f -mtime +3 #-delete
削除したいファイルが見つかった場合は、#
古いファイルを削除してください。-delete
cronとして実行するには、実行可能なスクリプトを作成し(#!bin/sh
ファイルの最初の行にshebangを追加し、それを実行可能にするために使用します)などの適切なディレクトリchmod a+x
に配置します。もちろん、これはより具体的なスケジュールを必要とせず、そのディレクトリがディストリビューションに存在すると仮定します。cron
/etc/cron.daily
/etc/cron.weekly
修正する
以下で説明するように、この-delete
オプションfind
は移植性が低下します。 POSIX 互換の方法は次のとおりです。
find /a/b/c/1 /a/b/c/2 -type f -mtime +3 #-exec rm {} +
#
正しいファイルがあることを確認したら、もう一度削除してください。
アップデート2
から引用スティーブン・チャジェラス コメント次のように:
-exec rm {} +
存在しない競合状態の脆弱性が存在する場合を参照してください。-delete
したがって、他の人が書き込むことができるディレクトリには使用しないでください。一部の調査結果はこれらの脆弱性を軽減する可能性があります-execdir
。
答え2
利用すれば良くなります。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.