首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >运行多个进程的Shell脚本

运行多个进程的Shell脚本
EN

Stack Overflow用户
提问于 2012-01-05 13:04:25
回答 3查看 5K关注 0票数 5

我有一个关于shell脚本的问题(环境是Linux,最好是Ubuntu)。

我们希望在RESTFul应用程序上执行压力测试。应力测试由两个过程组成。运行它们可能类似于:

java -jar stress.jar

爪哇-jar stress.jar -someparameter somevalue

这两件事必须同时开始。

第一个进程应该启动、运行和返回。第二个也是。根据定义,第二个将返回更早,我们希望它被反复执行,直到第一个返回。

如果有人能为我提供脚本(或我可以使用的基础)来实现这一点,我将非常感谢。

编辑

这就是诀窍:

代码语言:javascript
复制
#!/bin/bash

commandA & apid=$!; 

sleep 10;

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

回答 3

Stack Overflow用户

发布于 2012-01-05 13:10:34

使用&操作符在后台启动第一个进程:

代码语言:javascript
复制
java -jar stress.jar &

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

代码语言:javascript
复制
java -jar stress.jar -someparameter somevalue 
java -jar stress.jar -someparameter2 somevalue2

但是,如果进程打印为stdout,则可能会造成混乱。

票数 2
EN

Stack Overflow用户

发布于 2012-01-05 13:28:06

shell - get exit code of background process

有你的答案。您可以运行短暂的命令,而不是打印一些东西到stdout。

票数 1
EN

Stack Overflow用户

发布于 2012-01-05 17:43:42

以下是另一种工作方式

代码语言:javascript
复制
#!/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回收竞赛条件的影响,如果第二个命令存在很长时间,这种情况可能会很严重。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/8742976

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档