Comment lancer un ensemble de programmes dans tmux ou gnome-terminal dans un script?


32

Je voulais lancer quelques commandes simultanément dans tmux ou gnome-terminal ou xfterminal, chaque onglet différent avec une seule commande en cours d'exécution, et fermer cet onglet lorsque cette commande est terminée.

Tout autre logiciel est également le bienvenu

Je voulais émettre un seul script pour faire le travail, par exemple XX "cmd1" "cmd2" "cmd3"

Réponses:



27

Ouvrez une session tmux et lancez la première commande. Lancez ensuite plus de commandes sur les nouvelles fenêtres et répartissez uniformément les tailles de fenêtres à la fin.

tmux \
  new-session  "command1 ; read" \; \
  split-window "command2 ; read" \; \
  split-window "command3 ; read" \; \
  split-window "command4 ; read" \; \
  select-layout even-vertical

La readaprès chaque commande , la fenêtre de rester ouvert après la commande terminée afin que vous puissiez lire la sortie.


2
Cette réponse mérite plus de votes. Merci mec.
Lester Cheung

7

Si la configuration des programmes est toujours la même, vous pouvez utiliser un outil tel que teamocil .

Vous aurez besoin de créer avec une configuration (par exemple ~/.teamocil/sample), qui contient quelque chose comme:

windows:
  - name: my-first-window
    root: ~/Projects/foo-www
    filters:
      before: "rvm use 1.9.2"
      after: "echo 'I am done initializing this split.'"
    splits:
      - cmd: "git status"
      - cmd: "bundle exec rails server --port 4000"
        width: 50
      - cmd:
          - sudo service memcached start
          - sudo service mongodb start
        height: 50

Et puis tu peux courir: tmux new-session -d "teamocil sample" \; attach


6

Avec gnome-terminalce serait:

gnome-terminal --window -e 'cmd1' --tab -e 'cmd2' --tab -e 'cmd3'

Chaque onglet sera fermé une fois sa commande terminée.


super aussi, mais je préfère tmux cette fois ;-P
marguerite
En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.