问小白 wenxiaobai
资讯
历史
科技
环境与自然
成长
游戏
财经
文学与艺术
美食
健康
家居
文化
情感
汽车
三农
军事
旅行
运动
教育
生活
星座命理

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

创作时间:
作者:
@小白创作中心

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

引用
CSDN
1.
https://blog.csdn.net/u014261408/article/details/89931729

在Linux系统中,SSH断开后程序会随之停止运行,这给很多需要长时间运行程序的开发者带来了困扰。本文将介绍一个非常实用的工具——tmux,它可以帮助你在SSH断开后依然保持程序的持续运行。

tmux是什么?

tmux全称为terminal multiplexer,用户可以通过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端操作)创建session,attach 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 ,窗口号在状态栏左下方可见
detach tmux
C-b d,或者tmux detach
显示正在运行的tmux Sessions
tmux ls
attach tmux
tmux attach -t session-name
创建新Session并命名
tmux new -s newname
重命名现有的session
tmux rename-session -t oldname newname
显示帮助命令
C-b ?
调整窗口大小
C-b C-
往上翻页
C-b [,退出时按Esc
上下翻页
C-b PageUp/Page Down退出时按q
关闭demo会话
tmux kill-session -t demo
关闭服务器,关闭所有会话
tmux kill-server

复制粘贴命令

命令
含义
Ctrl-b, [
进入copy模式
arrow
移动光标到需要复制的文本起点
C-space
启动高亮文本功能
arrow
移动到需要复制的文本末尾
Alt+w
复制选中的文本到tmux剪贴板
C-b, ]
粘贴复制过的文本
© 2023 北京元石科技有限公司 ◎ 京公网安备 11010802042949号