5 votes

Shell script pour l'exécution de plusieurs processus

J'ai une question concernant les scripts shell scripts (l'environnement est Linux, de préférence Ubuntu).

Nous voulons exécuter un test de résistance sur une application RESTFul. Le stress test est composé de deux processus. Les exécuter pourrait être quelque chose comme :

java -jar stress.jar

java -jar stress.jar -someparameter somevalue

Les deux doivent être lancés en même temps.

Le premier processus doit démarrer, s'exécuter et revenir. Le second aussi. Par définition, le second reviendra beaucoup plus tôt, et nous voulons qu'il soit exécuté de manière répétée jusqu'à ce que le premier revienne.

Je serais très reconnaissant si quelqu'un pouvait me fournir le script (ou les bases que je peux utiliser) pour y parvenir.

EDIT

cela a fait l'affaire :

#!/bin/bash

commandA & apid=$!; 

sleep 10;

while kill -0 $apid; do commandB; done

2voto

Nikolay Polivanov Points 459

Utilice & pour lancer le premier processus en arrière-plan :

java -jar stress.jar &

Ainsi, le deuxième processus peut être lancé plusieurs fois en avant-plan pendant que le premier est en cours d'exécution :

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

mais si les processus impriment dans stdout, cela peut être désordonné.

1voto

Andreas Frische Points 96

shell - obtenir le code de sortie du processus d'arrière-plan

a votre réponse. Au lieu d'imprimer quelque chose à stdout, vous pouvez exécuter votre commande éphémère.

0voto

frankc Points 6014

Voici un autre moyen qui devrait fonctionner

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

Je pense que cette méthode est légèrement supérieure à la boucle while postée par le PO, car elle souffre d'une condition de course de récupération de pid, ce qui pourrait être grave si la deuxième commande dure longtemps.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X