2016-05-26 2 views
1

Je lis de la AWS docs:Quels types de commandes/scripts puis-je exécuter lorsqu'une instance EC2 est lancée?

En outre, parce que le script est exécuté de façon non interactive, vous ne pouvez pas inclure commandes qui nécessitent des commentaires des utilisateurs (tels que la mise à jour yum sans -y drapeau).

J'ai cette commande:

#!/bin/bash 
THIS_NODE_IP=$(/sbin/ip -o -4 addr list eth0 | awk '{print $4}' | cut -d/ -f1) 
​ 
xvfb-run java -jar /home/ubuntu/selenium_server.jar -host $THIS_NODE_IP -role webdriver -port 8181 -maxSession 10 -maxInstances 10 -hub http://my-selenium-hub.com:8080/grid/register platform=LINUX & 

... qui ne semble pas fonctionner. Le noeud sélénium qui démarre crée sûrement des commentaires dans la console mais je l'envoie en arrière-plan et ce n'est pas interactif.

Répondre

1

votre processus est exécuté en tant que vous lancez l'instance EC2, mais il arrête lorsque l'utilisateur qui lance l'instance déconnectera

Si vous voulez garder le processus après que l'utilisateur est déconnecté, vous pouvez utiliser nohup et si vous veulent obtenir la sortie de la commande que vous pouvez utiliser une redirection vers un fichier en utilisant comme >, quelque chose comme

nohup <yourlongcommand> &> /path_to_file/nohup.grid.out& 

vous pouvez suivre l'exécution du sélénium à partir du fichier nohup.grid.out

+0

Merci pour la réponse @Frederic. Selon les documents AWS, l'utilisateur exécutant les commandes au démarrage est toujours root. Est-ce qu'il se déconnecte aussi? –

+1

yep très probablement - dans d'autres cas, cela fonctionne, l'utilisateur (root ou autre) se connecte pour exécuter la commande puis déconnecte (de toute façon vous avez un timeout sur la connexion utilisateur, donc le temps d'attente est dépassé) –

+0

I comprendre, mais qu'en est-il de Apache qui fonctionne comme un service dans l'exemple de script aws? Le sélénium n'est pas géré comme un service de toute évidence. C'est pourquoi il est interrompu? –