Je gère une commande qui traite certaines données dans une fenêtre de shell (disons qu'elle a un pid 200). Malheureusement, j'ai oublié d'ajouter le & pour l'exécuter en arrière-plan.
Je dois exécuter un script d'analyse après que pid 200 soit terminé. Je pensais pouvoir ouvrir une autre fenêtre de coque et faire
wait 200; ./myanalysis.sh
Mais cela me reproche
"-bash: wait: pid 200 is not a child of this shell"
Dans cet esprit, est-ce que je peux exécuter mon script d'analyse automatiquement après la fin de ce processus?
Pouvez-vous utiliser ^ z , puis procédez comme suit?
wait 200; ./myanalysis.sh& fg %1
Cela attendra jusqu'à ce que le pid 200
soit terminé, puis exécutez votre analyse, puis vous mettez au premier plan.
Vous ne pouvez pas "attendre" les processus non-enfants, et vous devez le vérifier manuellement périodiquement. Voir par exemple cette réponse de débordement de pile .