たとえば、パイプを使用する場合
sudo cat /dev/sda | strings | less
SDA デバイスの文字列内で移動できます。しかし、sdaデバイスの内容が完全にロードされ、猫の出力ストリームに出力されますか?それとも、プログラムがcatの出力を要求するたびに改行文字が評価されますか? (つまり、少ないポケットベルでjを押します)
ベストアンサー1
これはHOWや作業less
ではなくHOWに関連しています。cat
strings
このcat
コマンドはデータを標準出力にプッシュし、strings
それらの間のパイプバッファがいっぱいで誰も読み取らない限りブロックされます。 cat
それ自体は最小限のバッファリングを行い、パイプバッファは一般に小さいです。
についても同様ですstrings
。結果データが読み取られない場合は、着信データを処理してcat
ブロックします。less
strings
less
その入力は、表示されるデータから前後に移動できるようにバッファリングされます。次のページにスクロールすると、そのバッファからless
より多くのデータが読み込まれます。strings
今後スクロールしないと、限らless
れた量のデータのみが読み取られると思います(それで、今後スクロールしないとブロックされます)strings
。cat
大量のデータがパイプで接続されると、バッファless
リングに大量のメモリが使用されます。もしあなたはそれをすべて読むことにしましたless
。
-B
バッファリングに使用されるメモリ量を64 KB(またはその-b
オプションで指定されたサイズ)に制限するオプションがあります。このようにバッファサイズを制限すると、指定されたバッファスペースに格納できるよりもスクロールするのを防ぐことができ、less
メモリ不足なしで大量のデータを読み取ることができます。
また、man less
システムも参照してください。