在Bash中以不同的频率运行两个操作

时间:2012-02-23 13:40:26

标签: linux bash unix

我需要bash中的脚本来运行两个频率不同的应用程序。我对bash并不熟悉,需要一些帮助

我有两个程序,m1和m2,随着时间的推移以不同的速度运行(压力测试)。 m1例如每10秒运行一次,每30秒运行m2。但应该可以改变频率

3 个答案:

答案 0 :(得分:5)

简化其他几个答案:

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

请注意,如果“m1”和“m2”命令需要一段时间才能执行,则不会每10/30秒运行一次。睡眠是一次运行结束和下一次运行开始之间的延迟。

因此,如果你真的想安排这些,那么他们每10或30秒运行一次,请使用cron。 Cron每分钟运行一次,所以你需要有多个cron作业,与睡眠相对应:

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

请注意,如果m1运行时间超过10秒,您将重叠,这可能会导致您的计算机消失为量子奇点。

答案 1 :(得分:2)

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

答案 2 :(得分:1)

我认为你要找的是睡眠命令和一个真正的循环。

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