我有一个关于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
答案 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回收竞争条件的影响,如果第二个命令长期存在,这可能是严重的。