Tmux是一个终端窗口管理工具。当需要长时间运行某个命令或者操作时,如果只是单纯地用终端窗口,难免会出现长时间闲置导致断连,或者网络原因导致进程中断等问题。为了解决这些问题,Tmux创建的终端会话支持后台运行命令,而且可以随时调出,方便监控。本文整理了作者常用的相关方法。

启动Tmux

1
tmux new -s session_name

这样便启动了一个Tmux的Session终端。而平时为了贪图方便,直接在终端窗口输入tmux也未尝不可,但是长远来说不建议养成这样的习惯。没有名字的Session,可能会增加运维成本。

切换session

会话分离

输入启动命令后,将会自动跳转到创建的Session。当我们完成会话中命令的输入,想要切换回原来的终端窗口页面,习惯的做法是:

  1. 首先按下Ctrl+B。这一步按下的按键叫做前缀键,执行快捷命令前都需要按下。
  2. 然后按下D。这是分离会话的快捷键,意思为“Detach”。

这样做是因为我在开发深度学习模型的时候,往往需要一个专门的Session监控输出,而在输出状态下,是没有办法输入tmux相关命令的。所以,快捷键成为了一种理想的方式。

在Session可以输入命令的条件下,可以输入下面的命令实现Session分离。

1
tmux detach

直接切换Session

无论是在原生的终端窗口,还是在Tmux创建的Session内部,都可以运行下面的命令,实现切换到某个特定的会话。

1
tmux switch -t session_name

无论是分配好的编号,还是自定义的会话名称,都可以替代上面的session_name

查看所有的Session列表

1
tmux ls

输入该命令后,会得到下列结果。

1
2
0: 1 windows (created Fri Sep 16 17:00:20 2022)
test: 1 windows (created Fri Sep 16 21:44:49 2022)

其中第一条是直接输入tmux命令创建的session窗口,tmux自动用阿拉伯数字来命名session。而对于第二条,即第二个session,不难看出被命名了“test”。

接入Session

与直接切换session类似,对应操作的英文是attach,为了简便也可以直接输入a

1
2
3
tmux attach -t session_name
# or
tmux a -t session_name

退出Session

习惯直接敲exit,即可直接退出当前的Session。如果想直接中止一个Session,可以输入下面的命令、

1
tmux kill-session -t session_name

总结

上面设计到的常用命令可以归纳成表格如下。

操作 英文操作 简称
创建新Session new -s
切换Session switch s
接入Session attach a
中止Session kill-session

目前只整理了当前开发过程中常用的Tmux命令,方便日常查询和回顾。


参考:https://www.ruanyifeng.com/blog/2019/10/tmux.html