tmux 之我见

why tmux ?

一个软件或者工具,使用的人不少,必定是由于这个软件或者工具解决了用户的一个或多个痛点。有需求才有市场,tmux 也不例外。那么 tmux 到底解决了咱们的哪些痛点呢?服务器

你有没有遇到过如下几种状况,session

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

  2. 在一个终端中编译或者运行一个程序,没有完成,可是又想干其余事情,一般的作法是再启动一个终端或者一个tab来作(我之前一直都是这么干的。。),可是有没有更好的方式呢?工具

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

若是你遇到过以上几种状况,并愁于如何解决,那么恭喜你,tmux 很是适合你。下面咱们就来看看,应用tmux 如何解决上述问题。code

几个概念

介绍如何解决上述问题以前,咱们须要先来了解几个概念。图片

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

  • window:窗口,隶属于 session,一个 session 中能够存在多个 window。每一个窗口相似于iTerm2中的每一个tab。it

  • pane:面板,隶属于 window,一个 window 中能够包含多个 pane。相似于iTerm2中的pane。io

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

session, window, pane 之间的关系图

解决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 适用于那些常常须要链接到远程服务器来进行工做的人。这样不管你身处何处,只要你链接上远程服务器 attach 后,能够立刻继续以前的工做。

相关文章
相关标签/搜索