2012-01-05 55 views
5

我有一個關於shell腳本的問題(環境是Linux,最好是Ubuntu)。用於運行多個進程的Shell腳本

我們想對RESTFul應用程序執行壓力測試。壓力測試由兩個過程組成。運行它們可能是這樣的:

Java的罐子stress.jar

Java的罐子stress.jar -someparameter someValue中

兩個在同一時間啓動。

第一個過程應該開始,運行和返回。第二個也是。根據定義,第二個將返回更早,我們希望它被重複執行,直到第一個返回。

如果有人能夠爲我提供腳本(或可以使用的基礎知識),我將非常感謝。

編輯

這並獲得成功:

#!/bin/bash 

commandA & apid=$!; 

sleep 10; 

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

測試寧靜的解決方案 - http://stackoverflow.com/questions/203495/testing-rest-webservices。使用bash創建測試條件可能不穩定。 – Jayan 2012-01-05 13:07:52

+0

我只想使用bash來「自動輸入」我已經用來啓動這些程序的命令 - 正如您所看到的,我們的測試套件已經在JAR中實現。你的意思是我不能依靠bash來完成這個簡單的任務嗎? – gyorgyabraham 2012-01-05 13:12:21

回答

2

使用&運營商開始在後臺第一過程:

java -jar stress.jar & 

所以第二個過程,你可以在開始多次前臺正在運行:

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

但是,如果進程打印到標準輸出,它可能會混亂。

0

這裏是另一種方式,應該工作


#!/usr/bin/expect 
spawn java -jar stress.jar -someparameter somevalue 
expect -timeout 0 timeout { 
    system java -jar stress.jar -someparameter2 somevalue2 
    exp_continue 
} 

我相信這是略優於while循環的OP發佈,因爲從一個PID填海競爭狀態,這可能是嚴重受到影響,如果第二個命令的生活需很長時間。