Jak uruchomić zestaw programu w tmuxie lub gnome-terminalu w skrypcie?

32

Chciałem uruchomić kilka poleceń jednocześnie w tmux lub gnome-terminal lub xfterminal, każdą inną kartę z uruchomionym pojedynczym poleceniem i zamknąć tę kartę po zakończeniu tego polecenia.

Wszelkie inne oprogramowanie jest również mile widziane

Chciałem wydać pojedynczy skrypt do wykonania zadania, np. XX „cmd1” „cmd2” „cmd3”

stokrotka
źródło

Odpowiedzi:

27

Otwórz sesję tmux i uruchom pierwsze polecenie. Następnie uruchom więcej poleceń w nowych oknach i równomiernie rozłóż rozmiary okien na końcu.

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

readPo każdym poleceniu powoduje, że okno pozostanie otwarte po zakończeniu polecenia, dzięki czemu można odczytać dane wyjściowe.

danijar
źródło
2
Ta odpowiedź zasługuje na więcej głosów. Dzięki stary.
Lester Cheung
7

Jeśli zawsze jest taka sama konfiguracja programów, możesz użyć narzędzia takiego jak teamocil .

Musisz utworzyć przy użyciu konfiguracji (np. ~/.teamocil/sample), Która zawiera coś takiego:

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

A potem możesz uruchomić: tmux new-session -d "teamocil sample" \; attach

Gert
źródło
6

Dzięki gnome-terminaltemu byłoby:

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

Każda zakładka zostanie zamknięta po zakończeniu wykonywania polecenia.

saeedn
źródło
świetnie też, ale tym razem wolę tmux ;-P
stokrotka