web-dev-qa-db-ja.com

LinuxコマンドのI / Oをトレース/監視する方法

find / -name abc.htmlを実行しましたが、このコマンドを再度実行した少し後に実行しました。今回は非常に高速だったので、findが結果をどこかにキャッシュする必要があることを知っています。

キャッシュが保存されている場所を確認するにはどうすればよいですか?

6
lovespring

実際、@ zongfuが指摘したように、findはその結果をファイルにキャッシュしませんが、カーネルはfindが読み取り中のディレクトリをキャッシュしているので、ディスクに触れることなく再び読み取ることができます。それでもプログラムがどのようなIOを実行しているかを見たい場合は、straceを使用できます。このプログラムは、指定した別のプログラムを実行し、プログラムが行うシステム呼び出しを記録します。引数を指定しないと、すべての情報が出力されるため、多くの情報になる可能性があるため、プログラムが開くファイルを確認できるように、open()などの特定の呼び出しのみに制限する必要があります。これは次のようになります。

strace -eopen someprogram
8
psusi

findは、特にディスクに何もキャッシュしません。 2回目の実行が非常に高速である理由は、Linuxがアクセスされたデータ(この場合はディレクトリリスト)をメモリにキャッシュするためです(freeを参照)。

5
zhongfu