文章目录
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了,里面的输出也正常了。
参考:
- tmux: hangs and do not load, and do not respond to any option command
- vim freezes inside tmux
- 阮一峰-Tmux 使用教程
- tmux使用指南:比screen好用n倍!
3.4 tmux回话无法输入
ctrl+C
就可以,应该就是那个命令卡住了
3.5 ctrl+b d无反应,回车后直接退出
也出现了3.3 tmux窗口回话停止输出中的框,但是ctrl+b d没有反应,但是ctrl+b d,然后回车之后,就直接退出了。。
后来发现,有可能是不小心按了键盘的大写锁定。。取消即可