结论:建议从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 就关了终端。
Zynq‑7000 / Zynq UltraScale+ 硬件调试技能。适用于 Xilinx Zynq(Cortex‑A9/A53 + FPGA)Linux 环境,调试 I2C、I2S、UART、GPIO 等外设。包括设备树配置、内核驱动、用户空间调试工具、交叉编译和常见问题排查,支持 PetaLinux 开发。
- 先运行
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 也只影响新增行为,已有窗格不会自动启用鼠标滚动——这点容易被忽略。

















