我有一个关于shell脚本的问题(环境是Linux,最好是Ubuntu)。
我们要对RESTFul应用程序执行压力testing。 压力testing由两个过程组成。 运行它们可能是这样的:
java -jar stress.jar
java -jar stress.jar – 某些参数somevalue
这两个必须同时启动。
第一个过程应该开始,运行和返回。 第二个也是 根据定义,第二个将返回更早,我们希望它被重复执行,直到第一个返回。
如果有人能够为我提供脚本(或者我可以使用的基础知识),我将非常感谢。
编辑
这个诀窍:
#!/bin/bash commandA & apid=$!; sleep 10; while kill -0 $apid; do commandB; done
使用&
运算符在后台启动第一个进程:
java -jar stress.jar &
所以第二个进程可以在第一次运行时在前台多次启动:
java -jar stress.jar -someparameter somevalue java -jar stress.jar -someparameter2 somevalue2
但如果进程打印到标准输出,它可以被搞乱。
shell – 获取后台进程的退出代码
有你的答案。 而不是打印一些标准输出,你可以运行你的短命令。
这是应该工作的另一种方式
#!/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回收竞争条件的困扰,如果第二条命令长时间存在,这可能是严重的。