如何在脚本内的tmux或gnome-terminal内部启动一组程序?


32

我想在tmux或gnome-terminal或xfterminal中同时启动几个命令,每个不同的选项卡运行一个命令,并在该命令完成时关闭该选项卡。

也欢迎其他任何软件

我想发布一个脚本来完成这项工作,例如XX“ cmd1”“ cmd2”“ cmd3”

Answers:



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
这个答案值得更多投票。谢啦。
莱斯特·张20年

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
雏菊
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.