web系统常见开发流程:日常->预发布->上线通常集成只有一台机器,大家的开发分支都会在上面做合并部署。当一个应用被很多人开发,被很多应用依赖时,就会出现问题。日常环境UI开发和测试的成功取决于这个应用提供的服务,但是频繁的发布会导致短暂的中断,从而阻塞进程。为了不阻塞单点集成机,可以考虑以正式批量发布的形式设置两台日常机,保证日常环境中必须有一台机器时刻提供服务。此解决方案存在问题。以前调试只需要关心一台机器查看日志,登录就可以了。现在变成两台机器了。app-|-->vmNo.1->log\-->vmNo.2->log这个问题会继续扩大。如果是单元化应用,单元也会有机器。按照上面的方法,会乘以2,那么一共就变成了4个单位,你见过吗?这时,我很头疼。UI测试的一次点击会落在哪台机器上?应用程序-|-中心-|-->1号虚拟机->日志|\-->2号虚拟机->日志|-unit-|-->vmNo.3->log\-->vmNo.4->log让我们想一个简单的方法来解决这个问题。tmux作为linux的多屏工具,最开始是被一个使用HHKB的哥们看到的。tmux的基本概念参考http://cenalulu.github.io/lin...上的图:session:session,我们可以定义一组逻辑要做的事情作为一个session,比如这个session我们是做应用程序的日常开发。window:窗口就是我们在屏幕上看到的控制台界面。它可以像iTerm2一样有多个标签页。其实概念上也可以直接理解为标签页。panel:在大窗口上,为了直接看到多台登录机器的情况,可以拆分这个窗口,常用快捷键ctrl+b,%垂直切屏(window)ctrl+b,"切screenhorizo??ntally(window)切换窗口ctrl+b+窗口号ctrl+b+n切换到下一个窗口ctrl+b+p切换到上一个窗口切换面板ctrl+b+上、下、左、右,移动到想要的panel调整面板大小ctrl+balt+向左或向右调整垂直面板的大小Ctrl+balt+向上或向下调整水平面板的大小来操作,翻页操作更像是vi中的纯键盘操作.ctrl+b,[切换到复制模式。然后使用ctrl+b返回,ctrl+f前进翻页。在多机shell屏幕上看到大招,向多个面板发送命令ctrl+b,:setwsynchronize-panes这个是今天的重点,之前说过,如果每天需要登录的机器扩容到4台呢?想象一下,我们打算连接4台机器。这个可以通过切窗口多个面板来解决,我们的目的是为了查看日志。这个操作在每台机器上都是完全一样的:cdxxx/xxx/xxxtail-fxxx.log那么有没有办法把我们输入的命令同步发送给所有的面板呢(在所有登录的机器上)呢?当然可以通过设置一个模式来解决。ctrl+b,:setwsynchronize-panes设置成功后,在一个面板中打字会同步到所有面板,如下,我只在一个面板中输入test。想取消怎么办?再次输入相同的命令(synchronize-panes)以取消此模式。文件中可以配置tmux的一些默认配置函数,路径为:~/.tmux.confshare我目前使用的是:set-option-gdefault-shell/bin/zshsetw-gmode-keysviset-option-gdefault-command"reattach-to-user-namespace-lzsh"set-window-option-gmode-mouseonset-gmouse-select-paneonset-gmouse-resize-paneonset-g鼠标选择窗口on#设置'v'开始选择Vimbind-key-tvi-copyvbegin-selectionbind-key-tvi-copyycopy-pipe"reattach-to-user-namespacepbcopy"#更新`的默认绑定Enter`也可以使用copy-pipeunbind-tvi-copyEnterbind-key-tvi-copyEntercopy-pipe"reattach-to-user-namespacepbcopy"#bindareloadkeybindRsource-file~/.tmux.conf;display-message"Configreloaded.."本文来自微信公众号《麦芽面包》,id“darkjune_think”转载请注明。扫一扫微信关注公众号。
