find / -name abc.html
を実行しましたが、このコマンドを再度実行した少し後に実行しました。今回は非常に高速だったので、find
が結果をどこかにキャッシュする必要があることを知っています。
キャッシュが保存されている場所を確認するにはどうすればよいですか?
実際、@ zongfuが指摘したように、find
はその結果をファイルにキャッシュしませんが、カーネルはfind
が読み取り中のディレクトリをキャッシュしているので、ディスクに触れることなく再び読み取ることができます。それでもプログラムがどのようなIOを実行しているかを見たい場合は、strace
を使用できます。このプログラムは、指定した別のプログラムを実行し、プログラムが行うシステム呼び出しを記録します。引数を指定しないと、すべての情報が出力されるため、多くの情報になる可能性があるため、プログラムが開くファイルを確認できるように、open()
などの特定の呼び出しのみに制限する必要があります。これは次のようになります。
strace -eopen someprogram
find
は、特にディスクに何もキャッシュしません。 2回目の実行が非常に高速である理由は、Linuxがアクセスされたデータ(この場合はディレクトリリスト)をメモリにキャッシュするためです(free
を参照)。