tmux运行原理和使用教程(ssh断掉之后如何保证程序的持续运行?)

关于如何在Windows下使用tmux,请参考这个教程:https://github.com/hongwenjun/tmux_for_windows


tmux是什么?

tmux全称为terminal multiplexer,用户可以通过 tmux 在一个终端内管理多个分离的会话,窗口及面板(重点:不受断网影响,避免丢失重要工作进度,所以tmux与SSH非常搭)。这么说起来干巴巴,不如画两个图解释一下。

SSH时发生了什么?

SSH断掉时,server会杀掉你在SSH里运行的程序吗?答案是会!具体机理可以看这篇文章,我就懒得再解释了。看图说话:
在这里插入图片描述

比如Alice(client)想要SSH到Bob的电脑(server)上跑一个程序,例如java xxx,那么如果这个程序耗时较长,或者Alice需要密切观察程序的输出,在Alice的SSH因为网络或者Bob电脑的设置等原因突然断线的情况下,一切都变成了浮云,这个java程序会被Bob的电脑杀掉。我们可以把SSH程序当成一个同步模型。Alice也可以考虑在java运行时写log,但是今天我们讨论一种更简单的方法,那就是tmux

tmux运行原理

看图说话:
在这里插入图片描述

tmux 采用client/server架构,当Alice ssh到Bob的电脑上并键入命令tmux时,她就默认启动了tmux服务器,并且创建了一个名字为0的session。我们可以把session当成一个bash环境:ssh启动了一个bash环境,这个session也启动了一个bash环境,不过session的环境独立于SSH,由在Bob电脑上运行的tmux服务器管理。所以ssh断掉完全不影响tmux session的正常运行。我们可以把tmux服务当做异步模型。相比ssh,孰优孰劣一目了然。

tmux使用举例

在这里插入图片描述
上图展示了一个tmux窗口:client端打开一个tmux session,然后分割成4个pane;在每个pane里ssh到server上并各开一个tmux session。注意client端的tmux和server端的tmux一定要区分开,不然就算不上真正理解并使用tmux。

使用tmux的正常操作为:ssh到server,(以下为server端操作)创建sessionattach session,跑程序,(以下为client端操作)关掉ssh,喝杯咖啡,锻炼一下身体,心情愉悦之后,再ssh到server然后attach session,查看代码运行情况。tmux甚至重现了你离开之前的所有terminal输出!惊不惊喜?!

使用tmux的骚操作为:屏幕共享。Alice ssh到server上并创建一个session salice,Bob 随后ssh到server上然后attach salice,那么Alice做的所有操作Bob都能看到,Bob也可以直接对session进行操作(当然Alice也可以看到),类似于两个人同时坐在server前进行现场表演,效果非常震撼。

tmux主要命令

以下内容主要参考:https://www.hamvocke.com/blog/a-quick-and-easy-guide-to-tmux/

动作命令
安装sudo apt-get install tmux
左右分屏同时按住Ctrl+b,释放之后,按Shift+%即可分屏
上下分屏同时按住Ctrl+b,释放之后,按Shift+"即可分屏
切换pane同时按住Ctrl+b,释放之后,按方向键切换
关掉pane输入exit回车,或者Ctrl+d
创建新窗口(覆盖原来的window)同时按住Ctrl+b,释放之后,按c
切换到之前的窗口同时按住Ctrl+b,释放之后,按p
切换到之后的窗口同时按住Ctrl+b,释放之后,按n
后文Ctrl简写为C,例如Ctrl+b简写为C-b
切换窗口C-b <number>,窗口号在状态栏左下方可见
detach tmuxC-b d ,或者tmux detach
显示正在运行的tmux Sessionstmux ls
attach tmuxtmux attach -t session-name
创建新Session并命名tmux new -s newname
重命名现有的sessiontmux rename-session -t oldname newname
显示帮助命令C-b ?
调整窗口大小C-b C-<arrow>
往上翻页C-b [,退出时按Esc
关闭demo会话tmux kill-session -t demo
关闭服务器,关闭所有会话tmux kill-server

复制粘贴命令

命令含义
Ctrl-b, [进入copy模式
arrow移动光标到需要复制的文本起点
C-space启动高亮文本功能
arrow移动到需要复制的文本末尾
Alt+w复制选中的文本到tmux剪贴板
C-b, ]粘贴复制过的文本
  • 2
    点赞
  • 4
    评论
  • 7
    收藏
  • 打赏
    打赏
  • 扫一扫,分享海报

评论 4 您还未登录,请先 登录 后发表或查看评论
©️2022 CSDN 皮肤主题:技术黑板 设计师:CSDN官方博客 返回首页

打赏作者

亲亲Friends

你的鼓励将是我创作的最大动力

¥2 ¥4 ¥6 ¥10 ¥20
输入1-500的整数
余额支付 (余额:-- )
扫码支付
扫码支付:¥2
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、C币套餐、付费专栏及课程。

余额充值