これは、Ubuntu Online、Fedora Online、Windows オンライン エミュレーター、または MAC OS オンライン エミュレーターなどの複数の無料オンライン ワークステーションの XNUMX つを使用して、OnWorks 無料ホスティング プロバイダーで実行できるコマンド cpipe です。
プログラム:
NAME
cpipe - バイトをカウントし、進捗状況を報告しながら、stdin を stdout にコピーします。
SYNOPSIS
cパイプ [-b bsize] [-vt] [-vr] [-vw] [-ngr] [-s 速度]
OPTIONS
-b バッファ サイズ (KB)、
1 1 から oo までの整数値。
デフォルト: `128'
-vt スループットを表示します。
-vr 読み取り時間を表示します。
-vw 書き込み時間を表示します。
-ngr 非貪欲読み取り。 書き込みを開始する前に、読み取り時にフルバッファを強制しないでください。
-s スループット速度制限 (kB/s)、
1 1 から oo までの Double 値。
DESCRIPTION
Cパイプ 所要時間を測定しながら、標準入力を標準出力にコピーします
入力バッファを読み取り、出力バッファに書き込みます。 XNUMX つ以上の場合、 -vx オプションは
与えられた場合、平均スループットの統計とコピーされたバイトの総量が出力されます。
標準エラー出力に出力されます。
Non 貪欲 読む
通常、cpipe はバッファーを完全に埋めるために最善を尽くします (オプション) -b)始まる前に
書き込み。 ただし、状況によっては、たとえば cpipe 経由で対話型プログラムと通信する場合、
これにより通信がデッドロックされます。プログラムは決して目にすることのない入力を待ちます。
入力が cpipe のバッファにスタックしているためです。 ただし、cpipe 自体にはそれ以上の入力は表示されません
プログラムが応答しなくなる前に。
これを回避するには、次を使用してみてください -ngr。 読み取り呼び出しを発行すると、cpipe は次のように満たされます。
少なくとも XNUMX バイトを取得するとすぐに。 バッファを埋める代わりに、読み取りを停止し、
取得したものはすべて出力に書き込みます。 ただし、スループットの測定値は次のようになります。
XNUMX つの読み取り/書き込みペアで転送されるバイト数が小さくなると、精度が低くなります。
cpipe は各バイトの作業に比較的多くの時間を費やすためです。
制限する スループット
オプションでスループット制限を指定した場合 -s, cパイプ 呼び出し 眠る(3) その間
バッファをコピーすることで、読み取り/書き込みサイクルの期間を人為的に延長します。 以来
ほとんどのシステムでは、usleep() がスリープする一定の最小時間 (たとえば 0.01 秒) があります。
小さいバッファ サイズでは上限に達することは不可能です。 この場合、
バッファサイズ(オプション) -b) 役立つかもしれません。 ただし、これによりスループットが制限されることに注意してください
平均的にのみ。 すべてのバッファはできるだけ高速にコピーされます。
実施例
コマンド
tar cCf / - ユーザー | cpipe -vr -vw -vt > /dev/null
結果は次のような出力になります
...
インチ: 19.541MB/秒で 6.4 ミリ秒 (平均 4.7MB/秒) 2.0MB
出力: 0.004GB/s で 30.5ms (平均 27.1GB/s) 2.0MB
スルー: 19.865MB/s で 6.3ms (平均 4.6MB/s) 2.0MB
...
当学校区の 最初の の項目に表示されます。 は、128 つのデータ バッファ (デフォルトでは XNUMXkB) を処理するのにかかる時間を示しています。
読み取り呼び出しには 19.541 ミリ秒かかり、/dev/null への書き込み呼び出しにはわずか 0.004 ミリ秒かかりました。
読み取りの開始から書き込みの終了まで、19.865 ミリ秒かかりました。
当学校区の 2番目の の項目に表示されます。 バッファ サイズ (デフォルトでは 128kB) を
最初の列の回数。
当学校区の 三番 の項目に表示されます。 開始からのすべての測定値の平均が含まれます。
プログラム。
最後に、 last の項目に表示されます。 転送された合計バイト数を示します。これは当然のことですが、
読み書きも同様です。
onworks.net サービスを使用してオンラインで cpipe を使用する