dai*_*isy 39 command-line terminal concurrency
我想在 tmux 或 gnome-terminal 或 xfterminal 中同时启动几个命令,每个不同的选项卡都运行一个命令,并在该命令完成时关闭该选项卡。
也欢迎任何其他软件
我想发布一个脚本来完成这项工作,例如 XX "cmd1" "cmd2" "cmd3"
dan*_*jar 42
打开一个 tmux 会话并启动第一个命令。然后在新窗口上启动更多命令,并在最后均匀分布窗口大小。
tmux \
new-session "command1 ; read" \; \
split-window "command2 ; read" \; \
split-window "command3 ; read" \; \
split-window "command4 ; read" \; \
select-layout even-vertical
Run Code Online (Sandbox Code Playgroud)
在read每个命令后导致该命令完成后,这样就可以读取输出窗口继续开放。
Pet*_*r.O 29
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 \;
Run Code Online (Sandbox Code Playgroud)
以上是总体思路的运行示例……更多在这里:How to run streamripper and mplayer in a split-screen X terminal, via a single script
如果程序的配置始终相同,则可以使用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
Run Code Online (Sandbox Code Playgroud)
然后你可以运行: tmux new-session -d "teamocil sample" \; attach
有了gnome-terminal这将是:
gnome-terminal --window -e 'cmd1' --tab -e 'cmd2' --tab -e 'cmd3'
Run Code Online (Sandbox Code Playgroud)
每个选项卡将在其命令完成后关闭。