Como iniciar um conjunto de programas dentro do tmux ou do gnome-terminal dentro de um script?

27

Eu queria lançar alguns comandos simultaneamente em tmux ou gnome-terminal ou xfterminal, cada guia diferente com um único comando em execução e feche essa guia quando o comando terminar.

Qualquer outro software é bem-vindo também

Eu queria criar um script único para fazer o trabalho, por exemplo, XX "cmd1" "cmd2" "cmd3"

    
por daisy 16.10.2011 / 09:54

4 respostas

22
tmux new -d -s my-session 'echo window-1 pane-1; sleep 8' \; \
          split-window -d 'echo window-1 pane-2; sleep 6' \; down-pane \; \
            new-window -d 'echo window-2;        sleep 4' \; next-window \; \
                attach \;

O exemplo acima é um exemplo da idéia geral ... mais aqui:

    
por 16.10.2011 / 11:35
14

Abra uma sessão do tmux e inicie o primeiro comando. Em seguida, inicie mais comandos em novas janelas e distribua uniformemente os tamanhos das janelas no final.

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

O read após cada comando faz com que a janela permaneça aberta após o término do comando, para que você possa ler a saída.

    
por 31.03.2017 / 23:49
6

Com gnome-terminal , seria:

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

Cada guia será fechada após o término do seu comando.

    
por 16.10.2011 / 12:20
6

Se é sempre a mesma configuração de programas, você pode usar uma ferramenta como teamocil .

Você precisará criar com uma configuração (por exemplo, ~/.teamocil/sample ), que contém 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

E então você pode executar: tmux new-session -d "teamocil sample" \; attach

    
por 09.12.2011 / 16:42