运行多个进程的Shell脚本

5

我有一个关于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

测试RESTful解决方案--https://dev59.com/cnVC5IYBdhLWcg3wtzqs。使用bash创建测试条件可能不稳定。 - Jayan
我只想使用bash来“自动输入”我已经用来启动这些程序的命令 - 正如您所看到的,我们的测试套件已经在JAR中实现。你的意思是我不能依赖bash完成这个简单的任务吗? - gyorgyabraham
3个回答

2

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

java -jar stress.jar &

因此,在第一个进程运行时,您可以在前台启动多个第二个进程:

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

但如果进程将内容打印到标准输出(stdout),可能会混乱。


1

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回收竞争条件的影响,如果第二个命令存在很长时间,这可能是严重的。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接