2012-01-05 46 views
5

我有一个关于shell脚本的问题(环境是Linux,最好是Ubuntu)。用于运行多个进程的Shell脚本

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

Java的罐子stress.jar

Java的罐子stress.jar -someparameter someValue中

两个在同一时间启动。

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

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

编辑

这并获得成功:

#!/bin/bash 

commandA & apid=$!; 

sleep 10; 

while kill -0 $apid; do commandB; done 
+0

测试宁静的解决方案 - http://stackoverflow.com/questions/203495/testing-rest-webservices。使用bash创建测试条件可能不稳定。 – Jayan 2012-01-05 13:07:52

+0

我只想使用bash来“自动输入”我已经用来启动这些程序的命令 - 正如您所看到的,我们的测试套件已经在JAR中实现。你的意思是我不能依靠bash来完成这个简单的任务吗? – gyorgyabraham 2012-01-05 13:12:21

回答

2

使用&运营商开始在后台第一过程:

java -jar stress.jar & 

所以第二个过程,你可以在开始多次前台正在运行:

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

但是,如果进程打印到标准输出,它可能会混乱。

0

这里是另一种方式,应该工作


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

我相信这是略优于while循环的OP发布,因为从一个PID填海竞争状态,这可能是严重受到影响,如果第二个命令的生活需很长时间。