gunzipは、既存のファイルをすべてメモリで安全に保護します。

gunzipは、既存のファイルをすべてメモリで安全に保護します。

サーバー上のすべてのgzip圧縮ファイルに文字列があることを確認したいと思います。gunzip -c *.gz | grep "string to be searched"サーバーのようなものを実行すると、解凍されたファイルのキャッシュに過負荷がかかるか心配されます。

ワンタイムリクエストであり、実験するスペースがないため、まだスクリプトを実行していません。台本が確定しましたか?順番に見え、その間にキャッシュを保存していないようですか?

ベストアンサー1

パイプの動作方法により、gunzip -c *.gzパイプが処理できるよりも多くのデータをパイプに供給できないため、grepパイプ自体はメモリの問題を引き起こしません。gunzip解凍時にデータをストリーミングするため、出力できるよりも多くのデータを解凍せずに、あまりにも多くのメモリを使用しません。

ディスクからすべてのデータを読み取るとデータはキャッシュされますが、カーネルはそれをうまく管理します。そこには心配することはありません。

私のシステムでは

/bin/time sh -c "gunzip -c *.gz | grep test"

3.1GiB圧縮ファイル(6.1GiB非圧縮)では、パイプライン全体が最大3MiBのRAMを消費することがわかりました。キャッシュ使用量は1.3GiB増加しました。

おすすめ記事