Скрипт оболочки для запуска нескольких процессов - PullRequest
5 голосов
/ 05 января 2012

У меня есть вопрос, касающийся сценариев оболочки (среда - Linux, предпочтительно Ubuntu).

Мы хотим выполнить стресс-тест приложения RESTFul.Стресс-тест состоит из двух процессов.Запуск их может быть что-то вроде:

java -jar стресс.jar

java -jar стресс.jar -Someparameter somevalue

Оба должны быть запущены одновременно.

Первый процесс должен запускаться, выполняться и возвращаться.Второй тоже.По определению, второй будет возвращаться намного раньше, и мы хотим, чтобы он выполнялся повторно до тех пор, пока не вернется первый.

Я был бы очень благодарен, если кто-то может предоставить мне сценарий (или основы, которые я могу использовать)для достижения этой цели.

РЕДАКТИРОВАТЬ

это добилось цели:

#!/bin/bash

commandA & apid=$!; 

sleep 10;

while kill -0 $apid; do commandB; done

Ответы [ 3 ]

2 голосов
/ 05 января 2012

используйте оператор & для запуска первого процесса в фоновом режиме:

java -jar stress.jar &

, поэтому второй процесс можно запускать несколько раз на переднем плане во время первого запуска:

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

, ноесли процессы печатают в стандартный вывод, это может быть запутано.

1 голос
/ 05 января 2012

shell - получить код завершения фонового процесса

имеет ваш ответ.вместо того, чтобы что-то печатать в stdout, вы можете запустить вашу недолговечную команду.

0 голосов
/ 05 января 2012

Вот еще один способ, который должен работать


#!/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, которое может быть серьезным, если вторая команда живет долго.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...