2012-02-23 14 views
0

周波数が異なる2つのアプリケーションを実行するには、bashでスクリプトが必要です。私はbashの経験がありませんし、いくつかの助けが必要ですBashで周波数が異なる2つの操作を実行する

私は2つのプログラムm1とm2を時間の経過とともに異なる速度で実行する(ストレステスト)があります。 m1は、例えば、10秒ごとに、m2は30秒ごとに実行される。しかし、周波数を変更することが可能でなければなりません

+1

cronを使用すると、20秒おきに30秒ごとにスクリプトを実行できます。 – Juanma

答えて

5

他の回答のカップル簡単にするために:あなたの「M1」と「M2」コマンドが実行に時間がかかる場合は、あなたがそれらのすべてを実行していないということ

$ while sleep 10; do echo 1; done & 
$ while sleep 30; do echo 2; done & 

注意を10/30秒。睡眠は、1回の走行の終了と次の走行の開始との間の遅延である。

スケジュールを10時間30秒ごとに実行したい場合は、cronを使用してください。あなたが眠りにオフセット複数のcronジョブを、持っている必要がありますので、cronは、1分に1回実行されます。m1を実行するために10秒以上かかる場合、あなたはあなたのコンピュータが消えさせる可能性がある、重複するだろうということ

* * * * * m1 
* * * * * sleep 10; m1 
* * * * * sleep 20; m1 
* * * * * sleep 30; m1 
* * * * * sleep 40; m1 
* * * * * sleep 50; m1 
* * * * * m2 
* * * * * sleep 30; m2 

注意を量子特異点となる。

+0

+1すばらしい、3つの答えが最高のものまで構築されています。 – l0b0

1

私はあなたが探していると思うのは、whileループと組み合わせてsleepコマンドです。

while true; do m1;sleep 10;done 
while true; do m2; sleep 30;done 
+1

テストを並行して実行したい場合は、両方ともバックグラウンドにする必要があります。スリープは実際のコマンドを実行するのにかかる時間を無視するため、指定した間隔よりも間隔が長くなる可能性があります。間隔を変更する唯一の方法は、実行中のジョブを強制終了し、 'sleep'ステートメントで別の秒数で再起動することです。 – tripleee

2
$ while true; do sleep 10; echo 1; done & 
$ while true; do sleep 30; echo 2; done & 
1 
1 
2 
1 
1 
1 
2 
... 
関連する問題