スクリプト内のtmuxまたはgnome-terminal内で一連のプログラムを起動する方法は?


32

tmuxまたはgnome-terminalまたはxfterminalでいくつかのコマンドを同時に起動し、単一のコマンドを実行してすべての異なるタブを起動し、そのコマンドが終了したらそのタブを閉じたいと思いました。

他のソフトウェアも歓迎します

XX "cmd1" "cmd2" "cmd3"など、ジョブを実行する単一のスクリプトを発行したかった

回答:



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
デイジー
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.