web-dev-qa-db-ja.com

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

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

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

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

32
daisy
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 \;

上記は、一般的なアイデアの実行例です...詳細はこちら: 単一のスクリプトを介して、分割画面のX端末でstreamripperとmplayerを実行する方法

27
Peter.O

Tmuxセッションを開き、最初のコマンドを開始します。次に、新しいウィンドウでさらにコマンドを起動し、ウィンドウサイズを最後に均等に配分します。

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

各コマンドの後にreadを指定すると、コマンドの終了後もウィンドウが開いたままになり、出力を読み取ることができます。

30
danijar

プログラムの構成が常に同じである場合は、 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

7
Gert

gnome-terminal それはそのようになります:

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

コマンドが終了すると、各タブが閉じます。

6
saeedn