Bagaimana cara meluncurkan seperangkat program di dalam tmux atau gnome-terminal dalam skrip?

32

Saya ingin meluncurkan beberapa perintah secara bersamaan di tmux atau gnome-terminal atau xfterminal, setiap tab berbeda dengan satu perintah berjalan, dan tutup tab itu ketika perintah itu selesai.

Semua perangkat lunak lain disambut baik

Saya ingin mengeluarkan satu skrip untuk melakukan pekerjaan itu, mis. XX "cmd1" "cmd2" "cmd3"

bunga aster
sumber

Jawaban:

27

Buka sesi tmux dan mulai perintah pertama. Kemudian luncurkan lebih banyak perintah di jendela baru dan sebarkan ukuran jendela secara merata di bagian akhir.

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

Perintah readsetelah setiap menyebabkan jendela tetap terbuka setelah perintah selesai sehingga Anda dapat membaca output.

danijar
sumber
2
Jawaban ini layak mendapat lebih banyak suara. Terima kasih sobat.
Lester Cheung
7

Jika konfigurasi program selalu sama, Anda dapat menggunakan alat seperti teamocil .

Anda harus membuat dengan konfigurasi (misalnya ~/.teamocil/sample), yang berisi sesuatu seperti:

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

Dan kemudian Anda dapat menjalankan: tmux new-session -d "teamocil sample" \; attach

Gert
sumber
6

Dengan gnome-terminalitu akan menjadi:

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

Setiap tab akan ditutup setelah perintahnya selesai.

Saeedn
sumber
hebat juga, tapi saya lebih suka tmux kali ini ;-P
daisy