¿Cómo iniciar un conjunto de programas dentro de tmux o gnome-terminal dentro de un script?


32

Quería lanzar algunos comandos simultáneamente en tmux o gnome-terminal o xfterminal, cada pestaña diferente con un solo comando ejecutándose, y cerrar esa pestaña cuando ese comando termine.

Cualquier otro software también es bienvenido

Quería emitir un solo script para hacer el trabajo, por ejemplo XX "cmd1" "cmd2" "cmd3"

Respuestas:



27

Abra una sesión tmux e inicie el primer comando. Luego, ejecute más comandos en nuevas ventanas y distribuya uniformemente los tamaños de las ventanas al final.

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

El readdespués de cada comando hace que la ventana permanezca abierta después de que el comando haya terminado para que pueda leer la salida.


2
Esta respuesta merece más votos. Gracias hombre.
Lester Cheung

7

Si siempre es la misma configuración de programas, puede usar una herramienta como teamocil .

Tendrá que crear con una configuración (por ejemplo ~/.teamocil/sample), que contenga algo como:

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

Y luego puedes ejecutar: tmux new-session -d "teamocil sample" \; attach


6

Con gnome-terminaleso sería:

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

Cada pestaña se cerrará una vez que finalice su comando.


genial también, pero prefiero tmux esta vez ;-P
daisy
Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.