2012-01-05 18 views
5

Tengo una pregunta con respecto a los scripts de shell (el entorno es Linux, preferiblemente Ubuntu).Shell script para ejecutar procesos múltiples

Queremos ejecutar una prueba de resistencia en una aplicación RESTFul. La prueba de estrés se compone de dos procesos. Ejecución de ellas podría ser algo como:

java-jar stress.jar

java-jar stress.jar -someparameter somevalue

Los dos tienen que ser iniciado al mismo tiempo.

El primer proceso debería iniciarse, ejecutarse y regresar. El segundo también Por definición, el segundo volverá mucho antes y queremos que se ejecute repetidamente hasta que regrese el primero.

Sería muy agradecido si alguien puede proporcionarme el guión (o los fundamentos que puedo usar) para lograr esto.

EDITAR

este hizo el truco:

#!/bin/bash 

commandA & apid=$!; 

sleep 10; 

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

Prueba de solución relajante - http://stackoverflow.com/questions/203495/testing-rest-webservices. Usar bash para crear una condición de prueba puede no ser estable. – Jayan

+0

Solo quiero usar bash para "escribir automáticamente" los comandos que ya uso para iniciar estos programas, como puede ver, nuestro conjunto de pruebas ya está implementado en los JAR. ¿Quieres decir que no puedo confiar en bash para esta simple tarea? – gyorgyabraham

Respuesta

2

uso & operador para iniciar el primer proceso en segundo plano:

java -jar stress.jar & 

por lo segundo proceso se puede iniciar varias veces en primer plano mientras primero se está ejecutando:

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

pero si los procesos se imprimen en stdout, pueden dañarse.

0

Aquí es otra forma en que debería funcionar


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

Creo que esto es ligeramente superior a la del bucle mientras que la OP ha publicado ya que sufre de una condición de carrera pid de recuperación, lo que podría ser grave si las segundas vidas de mando por mucho tiempo.

Cuestiones relacionadas