tmux 之我见

why tmux ?

一个软件或者工具,使用的人很多,一定是因为这个软件或者工具解决了用户的一个或多个痛点。有需求才有市场,tmux 也不例外。那么 tmux 到底解决了我们的哪些痛点呢?

你有没有遇到过以下几种情况,

  1. 使用 SecureCRT 或者 XShell 等远程连接到一台服务器,然后运行需要一段时间才能跑完的程序,突然内急,想上厕所,二话不说,按下待机按键,疾奔而去。等到你舒服的回来,打开电脑一看,我擦,我的ssh超时断开了,悲了个剧,程序还需要重新跑一遍。

  2. 在一个终端中编译或者运行一个程序,没有完成,但是又想干其他事情,通常的做法是再启动一个终端或者一个tab来做(我以前一直都是这么干的。。),但是有没有更好的方式呢?

  3. 每天上班远程连接到服务器开始工作后,前一天未完成的的工作现场什么都没了,一切都要整理头绪继续开始,每次ssh后都要重新打开各种窗口或者cd到各种文件夹下,是不是很烦躁。

如果你遇到过以上几种情况,并愁于如何解决,那么恭喜你,tmux 非常适合你。下面我们就来看看,应用tmux 如何解决上述问题。

几个概念

介绍如何解决上述问题之前,我们需要先来了解几个概念。

  • session:会话,一个会话就是我们在 tmux 服务中启动的一个多窗口容器。

  • window:窗口,隶属于 session,一个 session 中可以存在多个 window。每个窗口类似于iTerm2中的每个tab。

  • pane:面板,隶属于 window,一个 window 中可以包含多个 pane。类似于iTerm2中的pane。

三者之间的关系如下图所示:

《tmux 之我见》

解决ssh断开后程序终止问题

tmux 中的 session 可以 attach 和 detach,detach 可以理解为将当前的 terminal 隐藏到后台运行,attach 就是打开我们隐藏到后台的 terminal。当ssh连接突然断开时,tmux 会默认将当前terminal detach到后台,但并不会终止我们在当前 terminal 上运行的程序,我们只需要再次ssh连接到服务器,然后 attach 找回之前正在工作的 terminal 即可。

一切如初,是不是很爽!

创建一个session

$ tmux

执行tmux后,我们将启动一个默认名称为“ 0 ”的session。如果我们想指定名称,执行下面的命令

$ tmux new -s <name-of-session>

如何attach到已存在的session呢?

$ tmux attach

默认会attach到最早创建的session中,假如我们创建了多个session,也可以通过指定名称来指定打开某个session,

$ tmux attach -t <name-of-session>

如何查看已经存在的session列表呢?

$ tmux list-session   #等价于tmux ls

解决减少tab数量问题

假如平常你需要同时打开多个tab,那么tmux的pane也许更加适合你。它将一个window分成了多个部分,每个部分就是一个pane,你可以随时切换pane进行工作。

如下图所示,我们将一个window分成了三个pane。

《tmux 之我见》

总结

tmux 适用于那些经常需要连接到远程服务器来进行工作的人。这样无论你身处何处,只要你连接上远程服务器 attach 后,可以马上继续之前的工作。

    原文作者:030710314
    原文地址: https://segmentfault.com/a/1190000004474696
    本文转自网络文章,转载此文章仅为分享知识,如有侵权,请联系博主进行删除。
点赞