美文网首页计算机@linux_python_R 技术帖
tmux : 你的终端也可以很酷

tmux : 你的终端也可以很酷

作者: 周运来就是我 | 来源:发表于2020-06-15 20:29 被阅读0次

    经常看大佬喝着咖啡对着几个屏幕,看着每个屏幕几个窗口都在自动地滚动着不同的图案。是不是瞬间软化了?你是不是也想像大佬那样酷呢?试试tmux 吧。
    https://github.com/tmux/tmux/wiki

    tmux 简介

    tmux 是一个终端复用器,你可以在一个屏幕上管理多个终端。使用它最直观的好处就是,通过一个终端登录远程主机并运行tmux后,在其中可以开启多个控制台而无需再“浪费”多余的终端来连接这台远程主机。是BSD实现的Screen替代品,相对于Screen,它更加先进:支持屏幕切分,而且具备丰富的命令行参数,使其可以灵活、动态的进行各种布局和操作。

    tmux - a very simple beginner's guide

    Tmux的使用场景

    • 可以某个程序在执行时一直是输出状态,需要结合nohup、&来放在后台执行,并且ctrl+c结束。这时可以打开一个Tmux窗口,在该窗口里执行这个程序,用来保证该程序一直在执行中,只要Tmux这个窗口不关闭,可以看到任务执行细节
    • 公司需要备份数据库时,数据量巨大,备份两三天弄不完,这时不小心关闭了终端窗口或误操作就前功尽弃了,使用Tmux会话运行命令或任务,就不用担心这些问题。
    • 下班后,你需要断开ssh或关闭电脑,将运行的命令或任务放置后台运行。
    • 关闭终端,再次打开时原终端里面的任务进程依然不会中断
    基本功能
    • 提供了强劲的、易于使用的命令行界面。
    • 可横向和纵向分割窗口。
    • 窗格可以自由移动和调整大小,或直接利用四个预设布局之一。
    • 支持 UTF-8 编码及 256 色终端。
    • 可在多个缓冲区进行复制和粘贴。
    • 可通过交互式菜单来选择窗口、会话及客户端。
    • 支持跨窗口搜索。
    • 支持自动及手动锁定窗口。

    背完了快捷键我们来看管理tmux的关键:window与pane1:

    这俩概念要注意区分,因为我们往往就是知道window,其实也可以像理解vim的窗口那样理解,vim也是可以分面的嘛。

    mux uses windows and panes.

    • Sessions are for an overall theme, such as work, or experimentation, or sysadmin.
    • window - think of it like a tab; only one window is ever visible at a time (this guide won't address windows)
    • pane - belongs to a window; you can have many of these visible at once

    tmux模型下翻屏(翻页):

    1)进入tmux面板后,一定要先按ctrl+b,然后松开,再按其他的组合键才生效。
     
    2)常用到的几个组合键:
    ctrl+b ?            显示快捷键帮助
    ctrl+b 空格键       采用下一个内置布局,这个很有意思,在多屏时,用这个就会将多有屏幕竖着展示
    ctrl+b !            把当前窗口变为新窗口
    ctrl+b  "           模向分隔窗口
    ctrl+b %            纵向分隔窗口
    ctrl+b q            显示分隔窗口的编号
    ctrl+b o            跳到下一个分隔窗口。多屏之间的切换
    ctrl+b 上下键      上一个及下一个分隔窗口
    ctrl+b C-方向键    调整分隔窗口大小
    ctrl+b &           确认后退出当前tmux
    ctrl+b [           复制模式,即将当前屏幕移到上一个的位置上,其他所有窗口都向前移动一个。
    ctrl+b c           创建新窗口
    ctrl+b n           选择下一个窗口
    ctrl+b l           最后使用的窗口
    ctrl+b p           选择前一个窗口
    ctrl+b w           以菜单方式显示及选择窗口
    ctrl+b s           以菜单方式显示和选择会话。这个常用到,可以选择进入哪个tmux
    ctrl+b t           显示时钟。然后按enter键后就会恢复到shell终端状态
    ctrl+b d           脱离当前会话;这样可以暂时返回Shell界面,输入tmux attach能够重新进入之前的会话
    
    ##############  切换window
    
    在同一个会话的多个窗口之间可以通过如下快捷键进行切换:
    
    ctrl+b p           (previous的首字母) 切换到上一个window。
    
    ctrl+b n         (next的首字母) 切换到下一个window。
    
    ctrl+b 0         切换到0号window,依次类推,可换成任意窗口序号
    
    ctrl+b w         (windows的首字母) 列出当前session所有window,通过上、下键切换窗口
    
    ctrl+b l       (字母L的小写)相邻的window切换
    
    ctrl+b &     关闭当前window,会给出提示是否关闭当前窗口,按下y确认即可。当然,如果当前窗口的最后一个程序被exit掉后,窗口也会直接关闭。
    
    
    
    ############## 切换pane
    
    ctrl+b o           依次切换当前窗口下的各个pane。
    
    ctrl+b Up|Down|Left|Right      根据按箭方向选择切换到某个pane。
    
    ctrl+b Space (空格键)      对当前窗口下的所有pane重新排列布局,每按一次,换一种样式。
    
    ctrl+b z 最大化当前pane。  再按一次后恢复。
    
    
    
    C-b pageup/pagedown
    退出
    C-b   q
    
    tmux的远程批量操作的shell脚本

    在使用SSH或telnet远程连接服务器时,可能都遇到为一些长时间运行的任务而头疼,比如系统备份、ftp 传输等等。通常情况下我们都是为每一个这样的任务开一个远程终端窗口,因为他们执行的时间太长了。必须等待它执行完毕,在此期间可不能关掉窗口或者断开连接,否则这个任务就会被杀掉,一切半途而废了。也许nohup命令可以达到这个目的,如果程序的标准输出/标准错误是终端, nohup默认将其重定向到nohup.out文件。值得注意的是nohup命令只是使得程序忽略SIGHUP信号,还需要使用标记&把它放在后台运行。

    使用tmux打开一个终端窗口,可以在窗口里执行一个长时间运行的交互式命令操作,令其一直在后台跑着,并且在按键ctrl-b-d后,可以无感知的退出窗口,
    而退出后窗口不会关闭,即窗口里执行的交互命令也不会结束。这比起传统的"nohup commang & (然后按ctrl+c)"的方式要还用很多。

    如何在linux终端里创建一个tmux窗口的同时直接在窗口终端里执行命令呢?
    这就需要用到:

    tmux send -t session_name "command" ENTER!!!
    

    tmux的厉害之处还在与它支持批量的管理你的任务,在创建窗口的同时,可以同时在窗口终端里连续执行两个或多个命令,而不必每个窗口只执行一个任务的命令了。

    tmux中的最重要的三个概念:会话,窗口,pane的使用方法涵盖了它的基本框架,足以应付大多数工作。另外tmux还有一些高级用法,例如可以个性化的配置其组合键(官方默认的ctrl+b组合键按起来不太方便可以修改,UI设置,鼠标支持,复制粘贴等)。

    Tmux 使用教程
    Tmux常用快捷键以及我会常到的一些问题汇总
    Ubuntu Tmux 启用鼠标滚动
    Tmux(-yank,-cssh,-xpanes)使用指南
    tmux:打造精致与实用并存的终端
    Linux终端复用神器-Tmux使用梳理
    https://danielmiessler.com/study/tmux/
    https://www.howtogeek.com/671422/how-to-use-tmux-on-linux-and-why-its-better-than-screen/
    ssh的最佳伴侣-tmux

    相关文章

      网友评论

        本文标题:tmux : 你的终端也可以很酷

        本文链接:https://www.haomeiwen.com/subject/jzacxktx.html