1

私は現在、プログラムを同時に 8 回起動したときにプログラムが終了するのに必要な時間を測定しようとしています。

ここで、プログラムをさまざまなパラメーターで数回起動し、すべてが完了するまでの時間を測定する bash などを書きたいと思います。最後に使用するだけでプログラムを8回開始できると思います&が、いつ停止するかを知る方法がわかりません。

4

4 に答える 4

1

waitバックグラウンド ジョブが完了するまで待機するために使用できます。

#!/bin/sh
program &
program &
wait

program両方のインスタンスが終了するまで待機します。

于 2013-09-25T12:52:16.517 に答える
0

Bystrup 氏timeは、プログラムの実行時間を計るコマンドを提供します。Politowski 氏と user2814958&は、バックグラウンドでプログラムを実行するオペレーターを提供し、それらを同時に開始できるようにします。timeこれらを組み合わせると、さまざまなコマンドの出力がごちゃごちゃになり、どの出力がどのコマンドに関連するかを判断するのが難しくなることを除いて、ほとんどの場合、そこにいます。

この問題を解決する 1 つの方法は、出力を別のファイルに分けることです。

/usr/bin/time program1 2>/tmp/program1.time &
/usr/bin/time program2 2>/tmp/program2.time &

標準エラー (ファイル記述子 2) をファイルにリダイレクトしていることに注意してください。time標準出力の代わりに標準エラーに出力を書き込みます。へのフルパスの使用にも注意してくださいtime。一部のシェルにはtime、標準エラーではなく端末に出力を直接書き込むなど、動作が異なる組み込みコマンドがあります。

于 2013-09-25T13:08:09.750 に答える
0

まだ実行されているものを確認するために使用jobsします。8 が必要な場合は実行できます

if jobs | wc -l < 8 then  command & 

コードは機能しませんが、アイデアは得られます

于 2013-09-25T11:25:09.580 に答える