2 votes

Attendre que la dernière commande se termine avant de poursuivre son exécution.

Je suis en train de développer un script shell qui arrête effectivement les instances en cours d'exécution sur aws dans une région particulière et les redémarre ensuite dans le cadre de la maintenance planifiée. mais comme les outils ec2-api sont lourds, cela prend du temps pour exécuter la commande ec2. Je veux que mon système soit maintenu jusqu'à ce que la dernière commande ec2 s'exécute entièrement et montre son résultat. Par exemple, si j'exécute

ec2-stop-instances some-id --region us-west-1

Il devrait attendre la fin de l'exécution de ec2-stop. Je n'ai trouvé aucune solution à cela, c'est pourquoi je poste ici.

Dites-moi si quelqu'un a une idée de la manière dont cela devrait être fait.

2 votes

Si le script se contente de bifurquer vers l'arrière-plan alors wait fera probablement ce que vous cherchez. Mais je pense qu'il y a une sorte de magie asynchrone dans le script qui ne va pas permettre cela.

4voto

DuStorm Points 106

ec2-stop-instances ne attend pas que l'instance s'arrête. Il dit simplement à AWS d'arrêter l'instance. Il ne attend pas que l'instance s'arrête réellement.

Après avoir exécuté ec2-stop-instances, vous devrez exécuter ec2-describe-instances de manière répétée pour obtenir le statut actuel et seulement lorsque le statut est 'arrêté', vous pourriez continuer avec votre script.

0 votes

Merci Matt pour l'astuce. Vraiment, cela m'a été très utile.

SistemesEz.com

SystemesEZ est une communauté de sysadmins où vous pouvez résoudre vos problèmes et vos doutes. Vous pouvez consulter les questions des autres sysadmins, poser vos propres questions ou résoudre celles des autres.

Powered by:

X