当前位置:首页>Linux>Linux命令每日一清单046:screen--终端复用器命令速查表

Linux命令每日一清单046:screen--终端复用器命令速查表

  • 2026-10-11 08:29:54
Linux命令每日一清单046:screen--终端复用器命令速查表

screen(GNU Screen)是一个终端复用器,允许用户在单个终端窗口中管理多个独立的shell会话。与tmux类似,screen的核心价值在于:会话可以在后台运行,即使网络连接断开也不会中断;用户可以在不同会话之间切换,在同一个终端中同时运行多个程序。

screen是较早出现的终端复用工具,几乎在所有Unix/Linux系统上都可用,特别适合远程服务器管理、长时间运行的任务、开发环境维护等场景。screen支持窗口管理、会话分离与重连、多用户共享、日志记录等功能。虽然较新的tmux在某些方面功能更强,但screen的广泛可用性和较低的入门门槛使其依然是系统管理员的得力工具。

1. 启动与退出

命令说明
screen
启动一个新的screen会话
screen -S work
启动名为work的会话
screen -ls
列出所有正在运行的screen会话
screen -X -S work quit
停止名为work的会话
exit
退出当前shell/窗口(关闭该窗口)
Ctrl+a
 + k
关闭当前窗口(需确认)

2. 附加与分离

命令说明
screen -r
附加到唯一已分离的会话
screen -r work
附加到名为work的会话
screen -x work
附加到已附加的会话(多终端共享)
screen -d -r work
先在远端分离,再本地附加
screen -D -r work
强制分离并附加(同-d -r)
Ctrl+a d
从当前会话分离(会话继续后台运行)
Ctrl+a Ctrl+d
同Ctrl+a d

3. 前缀键与帮助

screen的默认前缀键是Ctrl+a,所有快捷键都需要先按前缀键再按其他键。

快捷键说明
Ctrl+a
进入screen命令模式
Ctrl+a ?
显示所有快捷键绑定
Ctrl+a :
打开命令提示符(输入screen命令)
Ctrl+a "
显示窗口列表
Ctrl+a w
在状态栏列出窗口

4. 窗口管理

窗口类似于浏览器标签页,每个窗口是一个独立的shell。

快捷键说明
Ctrl+a c
创建新窗口
Ctrl+a n
切换到下一个窗口
Ctrl+a p
切换到上一个窗口
Ctrl+a Ctrl+a
切换到上一次使用的窗口
Ctrl+a 0-9
切换到指定编号的窗口
Ctrl+a '
提示输入窗口编号并跳转
Ctrl+a A
重命名当前窗口
Ctrl+a k
关闭当前窗口(需确认)
Ctrl+a \
强制杀死当前窗口(不确认)
Ctrl+a .
更改当前窗口编号

5. 分屏与布局

快捷键说明
Ctrl+a S
水平分割当前区域(上下分屏)
Ctrl+a |
垂直分割当前区域(左右分屏,需支持)
Ctrl+a Tab
在分割区之间移动焦点
Ctrl+a X
删除当前分割区
Ctrl+a Q
删除除当前区域外的所有分割区
Ctrl+a :resize
调整当前区域大小
Ctrl+a F
调整当前区域到合适大小

注意: 垂直分屏需要较新版本的screen,或需在配置中启用。

6. 复制模式与滚动

快捷键说明
Ctrl+a [
进入复制/滚动模式
Space
开始选择文本(在复制模式中)
Enter
复制选中的文本(在复制模式中)
Ctrl+a ]
粘贴已复制的文本
Ctrl+a H
切换当前窗口的日志记录(生成screenlog.N文件)
Ctrl+a h
将当前窗口内容保存到hardcopy.N文件

复制模式下导航键:

按键说明
j / k
向下/向上移动一行(vi风格)
Ctrl+b / Ctrl+f
向上/向下翻整页
g / G
跳转到顶部/底部
/ / ?
向下/向上搜索
q
退出复制模式

7. 会话管理命令

在shell中执行的screen命令(非快捷键):

命令说明
screen -wipe
清理已死亡的会话(删除死会话)
screen -ls
列出所有会话
screen -S work -X stuff "ls -la^M"
向会话发送命令(^M表示回车)
screen -S work -p 0 -X hardcopy
将窗口0的输出保存到hardcopy.0
screen -S work -X eval "chdir /tmp" "screen bash"
在会话中执行多条命令
screen -dmS work
在后台启动会话(不附加)

8. 实用组合模式

命令/操作说明
screen -dmS job bash -c 'long-command; exec bash'
后台启动任务,完成后保留shell
screen -D -R work
附加(存在则强制附加)否则创建
screen -r work -p 2
直接附加到会话的窗口2
screen -L -S log
启动会话并启用日志记录
screen -x work
与另一终端共享同一个会话
Ctrl+a :multiuser on
启用多用户模式
Ctrl+a :acladd user
添加用户到多用户会话
while ! screen -r work; do sleep 1; done
等待会话可用并附加

9. 日志与记录

操作说明
screen -L
启动时启用日志记录(日志文件screenlog.N)
screen -L -Logfile /path/log.txt
指定日志文件路径
Ctrl+a H
动态切换当前窗口的日志记录
Ctrl+a h
将当前窗口内容保存到hardcopy文件
Ctrl+a :log
打开/关闭日志记录(命令行方式)

10. 配置文件

路径/内容说明
~/.screenrc
用户配置文件
defscrollback 10000
增加滚动缓冲区大小(行数)
hardstatus on
启用底部状态栏
hardstatus alwayslastline "%w"
显示窗口列表
startup_message off
禁用启动消息
caption always "%{= kw}%-w%{= bw}%n %t%{-}%+w"
自定义状态栏格式
bindkey -k k1 screen -t shell bash
绑定F1键创建shell窗口
multiuser on
启用多用户
acladd username
授权用户访问

.screenrc 示例:

startup_message off
defscrollback 10000
hardstatus alwayslastline "%{= ky}%H %{= kw}%= %{= wd}%Y-%m-%d %{= wd}%c"
caption always "%{= kw}%-w%{= bw}%n %t%{-}%+w"
bindkey -k F1 screen -t shell bash
bindkey -k F2 screen -t python python

11. screen vs tmux 对比

特性screentmux
首次发布
1987年
2007年
默认安装
几乎所有Unix/Linux
可能需要额外安装
垂直分屏
需较新版本
原生支持
脚本化
有限
强大(tmux命令)
窗格布局
基础
丰富
复制模式
vi/emacs选择
vi/emacs选择
配置语法
有学习曲线
相对简单
窗口管理
列表切换
列表+编号

12. 故障排查

问题解决方法
Cannot open your terminal '/dev/pts/x'
权限问题:script /dev/null -c screen
There is no screen to be resumed
会话不存在;使用screen -ls检查;创建新会话
screen: command not found
安装screen:apt install screen 或 yum install screen
垂直分屏不工作
screen版本较旧;升级或使用水平分屏替代
滚动缓冲区太小
配置defscrollback 10000;重新连接会话
颜色显示异常
在.screenrc中添加termcapinfo xterm* ti@:te@
Ctrl+a与编辑器冲突
修改前缀键:在.screenrc中添加escape `` `` 或escape ^Xx`
会话突然断开
SSH超时;在SSH配置中添加ServerAliveInterval 60

温馨提示: screen是经典终端复用工具,几乎所有服务器都预装。建议掌握以下技巧:1)远程工作时始终使用screen,避免因网络中断丢失工作;2)使用命名会话(screen -S name)方便管理;3)长时间任务可在screen中运行,分离后退出终端,稍后再重连查看;4)使用Ctrl+a H记录关键操作的输出;5)在.screenrc中启用hardstatus和caption提高效率。对于需要更现代化功能和分屏的场景,可以考虑切换到tmux。如果忘记分离就断开连接,screen会话会保持运行,重连后执行screen -d -r重新接管。使用screen -wipe定期清理已死亡的会话,保持列表整洁。

本文PDF格式下载:

  关注公众号(haopython),请回复: LTSCREEN

最新文章

随机文章