Comment lancer un processus en arrière-plan et vérifier quand il se termine dans un script bash? Mon idée est un script comme celui-ci:
launch backgroundprocess &
while [ Process is running ];do
echo "PROCESS IS RUNNING\r"
done;
echo "PROCESS TERMINATED"
cmd1 & p=$!; cmd2 & q=$!; while sleep 1; do echo still running ; done& wait $p $q; kill $!;
Avec
wait
vous pouvez avoir la granularité dont vous avez besoin:la source
Voici une façon de le faire:
la source
wait
Est probablement plus approprié pour cela?Vous pouvez exécuter votre processus avec nohup et écrire un script shell pour lire le fichier nohup.out utilisé par nohup pour se connecter.
la source
nohup
n'écrit riennohup.out
; il crée simplement le fichier et y redirige la sortie de la commande. (2) Si la commande ne produit aucun résultat, rien ne sera écritnohup.out
, et cette idée ne va nulle part. (3) Même si lacommand
sortie en écriture, comment savoir quand elle se termine en surveillant cette sortie?lsof
pour voir sinohup
utilise encorenohup.out
, mais je suis d'accord c'est une méthode très poilue.command
commence à courir,nohup
est parti. (1) Oui, je répète un chiffre, parce que je répète ce que j'ai dit il y a deux ans:nohup
n'écrit riennohup.out
. (5) Oui, vous pouvez écrire un script shell à boucler et à exécuterlsof
pour voir s’ilnohup.out
est toujours ouvert. Mais ce serait une réponse différente. (6) Même si vous faisiez cela, ce ne serait pas fiable. Et si un autre processus ouvrait lenohup.out
fichier? Vous voulez vraiment vérifier si ce processus spécifique estnohup.out
ouvert. (7) Mais, si vous allez faire cela, pourquoi ne pas simplement vérifier si le processus est en cours d'exécution?