Question

Je travaille sur un projet côté serveur qui se compose de plusieurs services. Chaque service est exécuté en mode interactif (à savoir non-démon), ce qui est pratique en développement actif. Le projet est en virtualenv. Ainsi, la manière typique de démarrer un service est:

$ cd ~/to/vitualenv/subdir/where/service/code/located
$ source ../path/to/virtualenv/bin/activate
$ ./script-to-start-service
+ Set title of terminal to the service name via GUI

Il serait correct s'il y avait 2-3 services à tout. Mais nous avons une douzaine. Et le redémarrage de tous après le redémarrage de l'ordinateur est une vraie douleur.

Alors, ce que je veux est un script, qu'une fois exécuté me ouvre une nouvelle fenêtre gnome-terminal avec une douzaine d'onglets nommés (un par service), avec virtualenv activé dans chaque groupe et en cours d'exécution des instances de service dans ce onglets. Le meilleur résultat que j'ai à ce jour est:

$ gnome-terminal --working-directory=~/to/vitualenv/subdir --window --tab --tab

-. Titre et --profile ressemble été ignorée et si --command est spécifié nouvelle fenêtre ouverte est fermée juste au moment après ouvert

Toutes les idées? Comment la source du script d'activation, donner un titre, et exécuter le service?

P.S. Il est à des fins de développement, et non pour le déploiement sur les serveurs réels.

Était-ce utile?

La solution

Les oeuvres suivantes pour moi et faire ce que vous avez demandé:

gnome-terminal --working-directory=/path/to/wd --tab-with-profile=profile1 --title=title1 -e 'bash --rcfile /path/to/rcfile1.sh' --tab-with-profile=profile2 --title=title2 -e 'bash --rcfile /path/to/rcfile2.sh'

Autres conseils

Créer un profil gnome-terminal nommé "service" (Edition> Profils> Nouveau).

Dans Edition> Préférences> Profil Titre et commande> Exécuter une commande personnalisée au lieu de ma coquille, réglez la commande personnalisée à:

bash --rcfile ../path/to/virtualenv/bin/activate

Ensuite, utilisez gnome-terminal pour lancer vos services. La commande suivante lance deux instances de yes dans des onglets dans des répertoires différents. Je me suis cassé la commande en trois lignes, mais vous devez entrer une seule ligne.

gnome-terminal
--tab-with-profile=service --working-directory=/home/$USER/data --title="feelgood" --command="yes"
--tab-with-profile=service --working-directory=/code --title="negative" --command="yes no"

Au lieu d'appeler directement activer, vous pouvez créer un fichier à utiliser comme commande personnalisée:

source ~/.bashrc
source ../path/to/virtualenv/bin/activate

Vous pouvez également ajouter des commandes (comme répertoire de changement ou le lancement de votre service). Méfiez-vous que chaque fois que vous ouvrez un terminal avec ce profil, ces commandes sont exécutées.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top