在大部分的 web app 开发环境中,通常会需要启动不只一个程序。比如一个用 Tornado 或者 Flask 写的的 Python web app,通常还需要启动处理异步操作的 rq 或 celery。
在生产环境中,这些程序可能会使用一个类似 supervisord 这样的进程管理器。但是在开发环境中,你可能会需要查看这些程序输出到 console 中的输出。
我们可以创建一个这样的 bash 脚本,用 tmux 来同时启动我们需要的所有程序,并分屏显示:
#!/bin/sh
tmux new-session -d 'python app.py'
tmux split-window -h 'rqworker'
tmux -2 attach-session -d
在上面的例子中,python app.py
是启动之后在左侧分屏显示的程序,rqworker
在右侧。如果把第二行中的 -h
换成 -v
那么将会使用水平方式分屏显示。
如果你需要切换分屏窗口中的焦点,那么使用快捷键 Ctrl-B 然后加方向键即可。
1
siteshen 2018-01-08 08:01:27 +08:00
https://github.com/tmuxinator/tmuxinator 让这个更方便,可管理多个独立的 tmux session。
tmuxinator project1-dev tmuxinator project2-stage tmuxinator project3-prod |
2
XiaoFaye 2018-01-08 08:04:20 +08:00 via Android
那谁来监控 tmux?
|
3
mywaiting 2018-01-08 08:41:05 +08:00
开发机挂着四个 24 寸的显示器,每个显示器开四个 putty 窗口........
|
5
hnyoumfk 2018-01-08 09:38:26 +08:00 1
可以用[Tmuxp]( https://github.com/tony/tmuxp)来管理 tmux,定义脚本更方便
|
6
lululau 2018-01-08 10:11:57 +08:00
我用 tmux-resurrect
|
7
alexsunxl 2018-01-08 10:33:32 +08:00
这个是保存 tmux session 的意思吗
tmux 有插件可以 save load session |
8
pangliang 2018-01-08 11:07:51 +08:00 1
|
9
robinlovemaggie 2018-01-08 11:20:15 +08:00 1
tmux_init() { tmux new-session -s "kumu" -d -n "local" # 开启一个会话 tmux new-window -n "other" # 开启一个窗口 tmux split-window -h # 开启一个竖屏 tmux split-window -v "top" # 开启一个横屏,并执行 top 命令 tmux -2 attach-session -d # tmux -2 强制启用 256color,连接已开启的 tmux } # 判断是否已有开启的 tmux 会话,没有则开启 if which tmux 2>&1 >/dev/null; then test -z "$TMUX" && (tmux attach || tmux_init) fi |
10
lqf96 2018-01-08 12:25:05 +08:00
iterm 和 tmux 的整合还是很开心的,基本是无缝的
|
11
secsilm 2018-01-08 13:04:09 +08:00 via Android
坑还是有很多的
|
12
h4lbhg1G 2018-01-08 13:41:57 +08:00
啊,这是站长么!
如果是 Windows 推荐使用我的 CommandTrayHost,不仅支持显示隐藏日志,还支持秒级的 crontab 自动重启和检测是否退出。 |
13
myself659 2018-01-08 13:44:30 +08:00
tmux 我还是小白一个
|
14
scriptB0y 2018-01-08 14:19:13 +08:00
|
15
Andrman 2018-01-08 23:57:53 +08:00
|