用于运行多个进程的Shell脚本

时间:2012-01-05 13:04:26

标签: linux bash shell

我有一个关于shell脚本的问题(环境是Linux,最好是Ubuntu)。

我们想在RESTFul应用程序上执行压力测试。压力测试由两个过程组成。运行它们可能是这样的:

java -jar stress.jar

java -jar stress.jar -someparameter somevalue

两者必须同时启动。

第一个进程应该启动,运行和返回。第二个也是。根据定义,第二个将更早地返回,我们希望它重复执行,直到第一个返回。

如果有人能为我提供脚本(或我可以使用的基础知识),我将非常感谢。

修改

这就是诀窍:

#!/bin/bash

commandA & apid=$!; 

sleep 10;

while kill -0 $apid; do commandB; done

3 个答案:

答案 0 :(得分:2)

使用&运算符在后台启动第一个进程:

java -jar stress.jar &

所以第二个进程可以在第一个进程中开始多次运行:

java -jar stress.jar -someparameter somevalue 
java -jar stress.jar -someparameter2 somevalue2

但是如果进程打印到stdout,它可能会混乱。

答案 1 :(得分:1)

shell - get exit code of background process

有你的答案。而不是将某些内容打印到stdout,您可以运行短命命令。

答案 2 :(得分:0)

这是另一种应该起作用的方式


#!/usr/bin/expect
spawn java -jar stress.jar -someparameter somevalue
expect -timeout 0 timeout { 
    system java -jar stress.jar -someparameter2 somevalue2
    exp_continue
} 

我认为这略微优于OP发布的while循环,因为它受到pid回收竞争条件的影响,如果第二个命令长期存在,这可能是严重的。