1

次のコマンドを使用して、合計サイズが 40Gb の約 20 個のファイルを結合しています。

cat hda1.ntfs-ptcl-img.gz.* > hda1.ntfs-ptcl-img.gz

このプロセスはしばらく実行されているため、通常、このプロセスにはどれくらいの時間がかかるのでしょうか。

ありがとう。

4

6 に答える 6

10

Ctrl+Z を押してジョブを一時停止し、「bg」コマンドを使用してバックグラウンドで実行します。次に、「ls -l」を使用して出力ファイルのサイズを確認するか、「ls -l /proc/*/fd | grep hda1' を実行すると、処理中のファイルが表示されます。

于 2009-12-30T08:38:18.073 に答える
4

このプロセスに通常どれくらいの時間がかかるのか疑問に思っています

ここで提供されている情報に答えることは不可能です。それは、どこから読んでいるか、どこに書き込んでいるかなどによって異なります。ローカル ディスクからの読み取りとローカル ディスクへの書き込みの両方を行っている場合は、競合が発生します。ネットワーク経由で読み取りまたは書き込みを行っている場合、ネットワークの速度によってはさらに遅くなる可能性があります。

プロセスからさらに情報を取得するには、これを単一の cat コマンドから for ループに分割できます。

for file in hda1.ntfs-ptcl-img.gz.*
do
  echo "Starting $file at `date`"
  cat $file >> hda1.ntfs.ptcl-img.gz
done

または、pv(pipeview) ユーティリティを使用して、パイプラインからさらに情報を取得できます。からman pv:

pv を使用すると、ユーザーは、経過時間、完了率 (進行状況バー付き)、現在のスループット率、転送された合計データ、および ETA などの情報を提供することにより、パイプラインを介したデータの進行状況を確認できます。

これを使用するには、適切なオプションを使用して、2 つのプロセス間のパイプラインに挿入します。その標準入力は標準出力に渡され、進行状況は標準エラーに表示されます。

pv は、提供された各 FILE を順番に標準出力 (- は標準入力を意味します) にコピーします。FILE が指定されていない場合は、標準入力だけがコピーされます。これは cat(1) と同じ動作です。

したがって、catコマンドラインをpv次のように置き換えるだけです。

pv hda1.ntfs-ptcl-img.gz.* > hda1.ntfs-ptcl-img.gz

ただし、すでにこれを開始しているため、次に何をすべきかについてのヒントは特に役に立ちません。代わりに、実行中のジョブをバックグラウンドに置くことができます (ctrl+z をbg使用して、プロンプトで実行し、ジョブをバックグラウンドで続行させます)。運が良ければ、あなたの livecd には が含まれているwatchので、watch ls -h hda1.ntfs.ptcl-img.gz数秒ごとに ls が実行され、出力で画面が更新されるため、時間の経過とともにファイルが大きくなるのを見ることができます。

インストールしていない場合はwatch、貧乏人の時計を使用してください。

while true
do
  clear
  date
  ls -l hda1.ntfs.ptcl-img.gz
  sleep 3
done

バイトが書き込まれる速さ (したがって、残り時間) を自分で把握する必要があります。

于 2009-12-30T08:38:55.823 に答える
0

簡単な答えは、おそらく1時間かそこらです。

ローカルで実行していて、プロンプトに戻らない場合でも、引き続き機能しています。リモートで実行している場合は、接続がタイムアウトする可能性があります(ワイヤレスルーターに接続しているかどうかなど、さまざまな要因によって異なります)。

他の人が言っているように、それの多くは、ローカルかリモートか、マシン上で起こっている他のプロセス、プロセッサ、クロック速度、RAMなど、結合されているファイルの数に依存します。

何かを実行していることを確認する最も簡単な方法は、別のターミナルウィンドウを開き、「ls -l /path/to/file.name」を定期的に実行して、出力ファイルが大きくなっているかどうかを確認することです。「top-pPID」(PIDを実際のプロセスIDに置き換える)を実行して、topを使用してそのプロセスだけを監視することもできます。実行中の場合は、何かを実行します。

于 2009-12-30T08:46:29.163 に答える
0

別の端末で、「ls -al」を使用して出力ファイルのサイズを確認します。これにより、どこまで進んでいるかがわかります。

プログレス バーについては、"pv" (パイプ ビューアー) を試してください: http://www.catonmat.net/blog/unix-utilities-pipe-viewer/

于 2009-12-30T08:28:06.183 に答える
0

どのファイルがすでに処理されているかを示す、より複雑な手順を作成できます。プロセス全体の時間は表示されませんが、あなたのものよりも詳細になります。

for f in `ls hda1.ntfs-ptc1-img.gz.*`; do
     echo $f
     cat $f >> hda1.ntfs-ptc1.img.gz
done
于 2009-12-30T08:30:09.113 に答える
0

Roger の回答と同様に、watch -n 10 "ls -l"「ls -l」を 10 秒ごとに呼び出して、ファイルが大きくなるのを監視できる を実行します。または、使用しますwatch "du -sh"

ファイル操作中にそれが「良い」ことであるかどうかはよくわかりませんが(少し遅くなるかもしれませんか?)、私にとってはうまくいきます。

于 2009-12-30T08:53:17.077 に答える