我有一个关于shell脚本的问题(环境是Linux,最好是Ubuntu)。
我们希望在RESTFul应用程序上执行压力测试。应力测试由两个过程组成。运行它们可能类似于:
java -jar stress.jar
爪哇-jar stress.jar -someparameter somevalue
这两件事必须同时开始。
第一个进程应该启动、运行和返回。第二个也是。根据定义,第二个将返回更早,我们希望它被反复执行,直到第一个返回。
如果有人能为我提供脚本(或我可以使用的基础)来实现这一点,我将非常感谢。
编辑
这就是诀窍:
#!/bin/bash
commandA & apid=$!;
sleep 10;
while kill -0 $apid; do commandB; done发布于 2012-01-05 13:10:34
使用&操作符在后台启动第一个进程:
java -jar stress.jar &因此,第二个进程可以在前台启动多次,而第一个进程正在运行:
java -jar stress.jar -someparameter somevalue
java -jar stress.jar -someparameter2 somevalue2但是,如果进程打印为stdout,则可能会造成混乱。
发布于 2012-01-05 13:28:06
shell - get exit code of background process
有你的答案。您可以运行短暂的命令,而不是打印一些东西到stdout。
发布于 2012-01-05 17:43:42
以下是另一种工作方式
#!/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回收竞赛条件的影响,如果第二个命令存在很长时间,这种情况可能会很严重。
https://stackoverflow.com/questions/8742976
复制相似问题