
ほとんどアクセスできない数GBのディレクトリがありますが、アクセスするのを待たずにすぐにその中にあるファイルを読むことができるようにしたいです。これらのファイルはほとんどアクセスされないため、ファイルシステムキャッシュにはありませんが、アクセスする前にLinuxでファイルシステムキャッシュにプリロードすることをお勧めします。
一部の人は初めてロードするのを待つ必要があるため、時間が節約されないと主張することがあります。私の特別なユースケースでは、これを自動的に実行できるため、システム時間を節約する問題ではありません。 、これはユーザー時間を節約する問題です(ファイルがキャッシュされたら待つ必要がないため)。
また、tmpfsなどのものを使用しないと、ファイルシステムのキャッシュは保証されないことがわかります。これはOSの推奨事項なので大丈夫です。
したがって、明らかに見えるアプローチは次のとおりです。
tar -cf - /mydirectory > /dev/null
ただし、これにより、数ギガバイトのディレクトリに対してもコマンドがすぐに返されます。 bashは、出力が/ dev / nullに向かっていることを発見し、tarが実際にそのディレクトリから読み取られないようにコマンド全体を最適化するようです。
オペレーティングシステムにディレクトリ内のすべてのファイルを読み取るように指示する簡単なコマンドは何ですか?
答え1
この最適化を行うのは bash ではなく GNU tar です。出力がファイルの内容を読み取る時期/dev/null
と読まない時期を識別できます。
出力が次のようにならないように準備してください/dev/null
。
tar -cf - /mydirectory > /dev/zero
または、次のような他のツールを使用してください。
find . | cpio -o >/dev/null
find . -type f -exec cat {} + >/dev/null