Linux下使用screen或tmux管理多个终端会话
时间:2026-05-05 09:53:33 500浏览 收藏
你在学习文章相关的知识吗?本文《Linux下使用screen或tmux管理多个终端会话》,主要介绍的内容就涉及到,如果你想提升自己的开发能力,就不要错过这篇文章,大家要知道编程理论基础和实战操作都是不可或缺的哦!
结论:建议从screen迁移到tmux,因其默认行为更合理、配置更清晰、插件生态更活跃且预装率高;tmux a默认连接上一个detached会话而非最新会话,需用tmux a -t指定;screen -r失败常因会话已死或未detach,应先screen -ls再screen -wipe;tmux快捷键失灵多因Ctrl+b未松开即按后续键,可改前缀键和启用鼠标支持。

直接说结论:如果你现在还在用 screen,建议尽快迁移到 tmux;不是因为 screen 不能用,而是 tmux 的默认行为更合理、配置更清晰、插件生态更活跃,且多数新发行版已默认预装或一键可装。
为什么 tmux detach 后再 attach 总是进错会话
常见现象是执行 tmux a 后连上了某个旧的、自己都忘了的会话,而不是最近用的那个。这是因为 tmux a 默认只连接「上一个 detached 的会话」,不按时间顺序,也不看活跃度。
- 想连指定会话?必须用
tmux a -t mysession,先通过tmux ls确认名字 - 如果会话没命名(比如只敲了
tmux),它会被分配编号如0、1,此时要用tmux a -t 0 tmux a和tmux attach完全等价,但别依赖它“智能选”,它不智能- 容易踩的坑:多个会话同名(比如都叫
0)时,-t 0只匹配第一个,后续同名会话会被忽略
screen -r 报错 “There is no screen to be resumed” 怎么办
这不是会话丢了,而是 screen 认为当前没有「已分离但仍在运行」的会话——可能已被 kill,或根本没 detach 就关了终端。
- 先运行
screen -ls,看输出里有没有Dead或Socket missing字样;有就说明进程已死,得重来 - 如果显示
There is a screen on … (Dead ???),执行screen -wipe清理残留 socket - 若
screen -ls完全空白,但你知道程序还在跑(比如ps aux | grep your_cmd能看到),说明它根本没进 screen,只是在裸 shell 里启动的 - 注意:
screen -r只能恢复 detached 状态的会话;如果会话还 attached 着(比如另一终端正连着),会报 “There is a screen on … and there is no screen to be resumed”
tmux 窗格分屏后光标卡住、快捷键失灵
典型表现是按下 Ctrl+b 没反应,或按了 % / " 后窗格没分裂,反而输入了字符。这基本等于你没松开 Ctrl+b 就按了下一个键。
Ctrl+b是前缀键,必须「按完松开」,再单独按命令键(比如%),不是Ctrl+b%连按- Mac 用户注意:自带终端可能把
Ctrl映射成Cmd,或启用了「使用 Option 键作为 Meta 键」,导致Ctrl+b实际发不出 - 临时验证方式:进 tmux 后按
Ctrl+b ?,能弹出帮助页就说明前缀生效;否则检查终端设置或改用tmux -u强制 UTF-8 - 窗格分裂后,默认焦点仍在原窗格,要用
Ctrl+b o或方向键切换,不是自动跳转
如何避免每次都要记一堆 Ctrl+b 组合键
没人该靠死记硬背操作终端复用器。真正省事的方式是改配置,而不是忍着用默认键绑定。
- 编辑
~/.tmux.conf,加一行set -g prefix C-a,就能把前缀从Ctrl+b改成Ctrl+a(和screen一致,降低切换成本) - 想让
Ctrl+方向键切窗格?加:bind -r Left select-pane -L等四行 - 启用鼠标支持(滚动、点击切窗格):加
set -g mouse on(tmux 2.1+) - 改完记得重载:
tmux source-file ~/.tmux.conf,不用重启会话
复杂点在于:tmux 的配置项有 session 级和 global 级之分,有些设置(比如 mouse)必须在会话创建前生效,所以改完配置后新起的会话才认;老会话 reload 也只影响新增行为,已有窗格不会自动启用鼠标滚动——这点容易被忽略。
到这里,我们也就讲完了《Linux下使用screen或tmux管理多个终端会话》的内容了。个人认为,基础知识的学习和巩固,是为了更好的将其运用到项目中,欢迎关注golang学习网公众号,带你了解更多关于的知识点!
-
501 收藏
-
501 收藏
-
501 收藏
-
501 收藏
-
501 收藏
-
396 收藏
-
295 收藏
-
500 收藏
-
438 收藏
-
303 收藏
-
331 收藏
-
170 收藏
-
332 收藏
-
344 收藏
-
291 收藏
-
459 收藏
-
423 收藏
-
- 前端进阶之JavaScript设计模式
- 设计模式是开发人员在软件开发过程中面临一般问题时的解决方案,代表了最佳的实践。本课程的主打内容包括JS常见设计模式以及具体应用场景,打造一站式知识长龙服务,适合有JS基础的同学学习。
- 立即学习 543次学习
-
- GO语言核心编程课程
- 本课程采用真实案例,全面具体可落地,从理论到实践,一步一步将GO核心编程技术、编程思想、底层实现融会贯通,使学习者贴近时代脉搏,做IT互联网时代的弄潮儿。
- 立即学习 516次学习
-
- 简单聊聊mysql8与网络通信
- 如有问题加微信:Le-studyg;在课程中,我们将首先介绍MySQL8的新特性,包括性能优化、安全增强、新数据类型等,帮助学生快速熟悉MySQL8的最新功能。接着,我们将深入解析MySQL的网络通信机制,包括协议、连接管理、数据传输等,让
- 立即学习 500次学习
-
- JavaScript正则表达式基础与实战
- 在任何一门编程语言中,正则表达式,都是一项重要的知识,它提供了高效的字符串匹配与捕获机制,可以极大的简化程序设计。
- 立即学习 487次学习
-
- 从零制作响应式网站—Grid布局
- 本系列教程将展示从零制作一个假想的网络科技公司官网,分为导航,轮播,关于我们,成功案例,服务流程,团队介绍,数据部分,公司动态,底部信息等内容区块。网站整体采用CSSGrid布局,支持响应式,有流畅过渡和展现动画。
- 立即学习 485次学习