私は現在、プログラムを同時に 8 回起動したときにプログラムが終了するのに必要な時間を測定しようとしています。
ここで、プログラムをさまざまなパラメーターで数回起動し、すべてが完了するまでの時間を測定する bash などを書きたいと思います。最後に使用するだけでプログラムを8回開始できると思います&
が、いつ停止するかを知る方法がわかりません。
私は現在、プログラムを同時に 8 回起動したときにプログラムが終了するのに必要な時間を測定しようとしています。
ここで、プログラムをさまざまなパラメーターで数回起動し、すべてが完了するまでの時間を測定する bash などを書きたいと思います。最後に使用するだけでプログラムを8回開始できると思います&
が、いつ停止するかを知る方法がわかりません。
wait
バックグラウンド ジョブが完了するまで待機するために使用できます。
#!/bin/sh
program &
program &
wait
program
両方のインスタンスが終了するまで待機します。
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
、標準エラーではなく端末に出力を直接書き込むなど、動作が異なる組み込みコマンドがあります。
まだ実行されているものを確認するために使用jobs
します。8 が必要な場合は実行できます
if jobs | wc -l < 8 then command &
コードは機能しませんが、アイデアは得られます