設定方法-atime
ミリ秒、秒、または分で?デフォルトは日です:
-atime n
ファイルはn * 24時間前に最後にアクセスされました。ファイルが最後にアクセスされた24時間前の期間が判明した場合、小数部分は無視されるため、-atime +1と一致するには、ファイルは少なくとも2日前にアクセスされている必要があります。
Cronジョブを1時間ごとに実行して、特定のディレクトリ内のファイルがその時間内にアクセスされたかどうかを確認したいと思います。小数として時間を入力しても機能しないようです。
find . -atime 0.042 -print
しかし、とにかくもっと良い解決策があるかもしれません–おそらく別のコマンド?または、おそらくこれは実行できません..最後に変更されたファイルを見つけるためにx分あります-mmin
これにより、時間を分単位で設定できます。おそらく、アクセス時間にそのようなオプションがないことは、情報が同じ方法で保存されていないことを意味しますか?
私はUbuntu 16.04を使用しています。
_-mtime <timespec>
_を実行すると、_<timespec>
_はfind
が開始されたときのファイルの経過時間をチェックすることに注意してください。
非常に小さなディレクトリツリーで実行しない限り、find
がディレクトリツリーをクロールしてすべてのファイルに対してlstat()
を実行するには、数ミリ秒(数秒または数時間ではない)かかります。したがって、1秒未満の精度であると、必ずしも意味がありません。
また、すべてのファイルシステムが1秒未満の粒度のタイムスタンプをサポートしているわけではないことにも注意してください。
そうは言っても、いくつかのオプションがあります。
多くのBSDのfind
と_schily-tools
_のBSDを使用すると、次のことができます。
_find . -atime -1s
_
最後にアクセスされてから1秒未満のファイルを検索する(find
が開始されたときと比較して)。
zsh
の場合:
_ls -ld -- **/*(Dms-1)
_
GNUツールを使用すると、1秒未満の細分性のために、touch
でatimeを設定した参照ファイルを使用できます。
_touch -ad '0.5 seconds ago' ../reference
find . -anewer ../reference
_
または、Perl
の最新バージョン:
_Perl -MTime::HiRes=lstat,clock_gettime -MFile::Find -le '
$start = clock_gettime(CLOCK_REALTIME) - 0.5;
find(
sub {
my @s = lstat $_;
print $File::Find::name if @s and $s[8] > $start
}, ".")'
_
GNU findを使用すると、-amin
の代わりに -atime
。ご想像のとおり、「ファイルはn分前に最後にアクセスされました」です。
そうは言っても、ほとんどの最近のシステムはデフォルトでファイルシステムにrelatime
オプションを使用することに注意してください。これにより、ファイルが実際にmodified最後のアクセス以降、またはしきい値(通常は24時間)が経過した場合。
したがって、おそらく、問題のファイルシステムに対して変更するか、別のアプローチを探す必要があります。 incrond は、独自のデーモンを作成せずにファイルシステムのアクティビティで起動するスクリプトを設定するための便利な方法です。