Tmux参考文档:
阮一峰-Tmux 使用教程
github地址

1. 常见用法

一开始只知道screen,但是screen这个工具在某些情况下无法使用,参考文章:docker中使用screen报错 /bin/sh: 1: __git_ps1: not found,所以以后只会使用Tmux。

常见使用如下:

> tmux new -s train
# 创建一个名为train的新会话

> tmux detach
# 退出当前会话,回到之前的bash中

> tmux attach -t train
# 回到train这个会话中

# tmux ls命令可以查看当前所有的 Tmux 会话。
> tmux ls
train: 1 windows (created Fri May  7 03:01:42 2021) [130x44]

# 返回之前创建的某个会话的界面中
> tmux attach -t <session-name>
# 例如  tmux attach -t train
# 注意 如果在session中使用exit,这个session就会被关闭

# 删除名为train的会话
tmux kill-session -t train

如果在执行的任务中,无法输入命令离开tmux界面,可以使用快捷方式ctrl+b进入tmux的命令模式,再使用d退出当前Tmux窗口。

即先按下,ctrl+b,再按下d(detach)

2. 实用功能

2.1 查看tmux会话历史消息

今天要查看tmux会话中的历史消息,感谢Tmux查看会话历史输出信息

tmux a -t mysession  # 进入会话

ctrl+b 进入命令模式,然后按下`[`,即进入历史输出信息查看模式,
可通过键盘上的上下左右键来滚动历史输出信息。

如果要退出查看模式,按下q即可。

2.2 删除tmux会话

tmux出现了3.1的问题,解决后,默认创立了一个没有name的会话。

/tmp/tmux-0$ tmux ls
0: 1 windows (created Thu May 12 13:40:03 2022) [134x23]
/tmp/tmux-0$ tmux kill-session -t 0
/tmp/tmux-0$ tmux ls
no server running on /tmp/tmux-0/default

可以直接使用session的序号ID来进行删除

3. 其它问题

3.1 报错 error connecting to /tmp/tmux-0/default (No such file or directory)

tmux还有一个会话在运行中的时候,服务器关机重启了,再进来就报这个错误

3.1.2 解决2

参考Github issue:Nothing works: error connecting to /tmp/tmux-1000/default (No such file or directory) #2377

pkill tmux

strace -fostrace.out tmux new
# bash: strace: command not found

# 如果提示没有strace命令,可以安装一下,可能需要sudo
apt-get install strace

执行完上述操作,可以看一下之前出问题的目录

root@XX:/tmp/tmux-0$ ls
default  strace.out
root@XX:/tmp/tmux-0$ vi default

那个default,默认是个空文件。。。

❌ 3.1.1 解决1

参考CSDN博客error connecting to /tmp/tmux-

"1. 确认相应的目录/文件是否存在"

/home $ cd  /tmp/tmux-0/
/tmp/tmux-0/$ ls
/tmp/tmux-0$ pkill -USR1 tmux
/tmp/tmux-0$ tmux ls
error connecting to /tmp/tmux-0/default (No such file or directory)

错误探索

# 不存在default则自己手动创建一个,再ls确认一下生成对不对
/tmp/tmux-0/$ mkdir default

# 创建好之后再去执行,可以看到,提示已经不一样了
/tmp/tmux-0$ tmux ls
no server running on /tmp/tmux-0/default

# 尝试新建一个session
tmp/tmux-0$ tmux new -s heart
error connecting to /tmp/tmux-0/default (Is a directory)
# 所以那个default是个文件,不是个文件夹。。。

3.1.3 修改tmux默认保存位置

参考tmux的issue:Change tmux default temporary location /tmp/tmux-1000 #1646

tmux kill-server # 先关闭tmuxserver服务
mkdir /tmp/foo  # 新建一个自己打算用来存放tmux临时文件的文件
export TMUX_TMPDIR=/tmp/foo # 设置TMUX_TMPDIR目录为刚刚创建的目录

# 新建一个tmux session,测试临时保存路径是否正确
tmux new -d
tmux display -pF '#{socket_path}'

注意,如果没有专门设置容器和宿主机的/tmp目录的映射,则容器里的/tmp和宿主机的/tmp文件内容是不一致的。

3.2 多用户问题

参考:tmux共享_天天都在用的 Tmux,可你知道如何在多用户间共享 Session 吗?

因此,要想让多个用户共享 Tmux Session,只需要指定这些用户调用的 Tmux Client 连接上同一个 Socket 文件即可。而这可以分成两种情况:

在公司一般比较常见多人使用同一账号登录服务器的情况,
这时由于访问的都是同一个TMUX_TMPDIR=/tmp/foo文件夹,所以这些人的操作会互相影响。。。

3.3 tmux窗口回话停止输出

在这里插入图片描述
显示类似上图这样的窗口,同时鼠标点击上半部分,然后使用方向上下键可以切换不同的session。

这其实是因为不小心按下了ctrl+b,然后按了s,(Ctrl+b s:列出所有会话。)

选中你希望查看的session,然后回车,就会只看到对应的session了,里面的输出也正常了。

参考:

3.4 tmux回话无法输入

感谢tmux 卡死的解决办法

ctrl+C就可以,应该就是那个命令卡住了

Logo

为开发者提供学习成长、分享交流、生态实践、资源工具等服务,帮助开发者快速成长。

更多推荐