Як запустити набір програми всередині tmux або gnome-terminal у сценарії?


32

Я хотів запустити кілька команд одночасно в tmux або gnome-terminal або xfterminal, кожну іншу вкладку з однією командою, що виконується, і закрити цю вкладку, коли ця команда закінчиться.

Будь-яке інше програмне забезпечення також вітається

Я хотів випустити єдиний сценарій, щоб виконати цю роботу, наприклад, XX "cmd1" "cmd2" "cmd3"

Відповіді:


27
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 \;

Наведене вище є прикладом загальної ідеї ... докладніше тут: Як запустити стриптизер і mplayer у розділеному X-терміналі, за допомогою одного сценарію


27

Відкрийте сесію tmux і запустіть першу команду. Потім запустіть більше команд на нових вікнах і рівномірно розподіліть розміри вікон в кінці.

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

readПісля кожної команди викликає вікно залишатися відкритим після завершення команди , так що ви можете читати висновок.


2
Ця відповідь заслуговує на більше голосів. Спасибі людина.
Лестер Чеун

7

Якщо це завжди однакова конфігурація програм, ви можете використовувати такий інструмент, як teamocil .

Вам потрібно буде створити конфігурацію (наприклад ~/.teamocil/sample), яка містить щось на зразок:

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

І тоді ви можете запустити: tmux new-session -d "teamocil sample" \; attach


6

З gnome-terminalним було б:

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

Кожна вкладка буде закрита після завершення команди.


чудово також, але я віддаю перевагу tmux цього разу ;-P
ромашка
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.