screen使用详解
Screen是一个全屏窗口管理器,它在多个进程之间多路复用物理终端。每个虚拟终端都提供DEC VT100终端的功能,此外,还提供 ANSI X3.64 (ISO 6429) 和 ISO 2022 标准的多项控制功能(例如,插入/删除行和支持多个字符集)。
每个虚拟终端都有一个回滚历史缓冲区和一个复制和粘贴机制,允许用户在窗口之间移动文本区域。当screen被调用时,它会创建一个带有 shell(或指定命令)的窗口,以便你可以像往常一样使用该程序。然后,您可以随时创建包含其他程序(包括更多 shell)的新(全屏)窗口、终止当前窗口、查看活动窗口列表、打开和关闭输出日志记录、在窗口之间复制文本、查看回滚历史记录、在窗口之间切换等。所有窗口都完全独立于彼此运行其程序。
安装screen
screen是默认的gun utils,很多linux系统默认都安装了,如果没有可使用如下命令安装
# debian based
apt install screen
# redhat based
yum install screen
# or
dnf install screen
# 检查screen版本
root@hcss-ecs-279f:~# screen -v
Screen version 4.09.00 (GNU) 30-Jan-22
使用screen
使用screen
命令不带任何参数即可新建打开一个session。
每个session都有如[pid.sessionname]
的命名,其中pid为唯一生成的id,而默认生成的sessionname由tty和host名组成。
session有两种状态:
- Attached 正在使用的激活态
- Detached 后台运行的非激活态
如下,使用screen -ls
查看session列表,会发现一个pid为1489
名为pts-3.hcss-ecs-279f
的session,状态为Attached。
root@hcss-ecs-279f:~# screen -ls
There is a screen on:
1489.pts-3.hcss-ecs-279f (04/09/2025 04:45:13 PM) (Attached)
1 Socket in /run/screen/S-root.
root@hcss-ecs-279f:~#
命名session
为了便于管理,可以使用-S
选项来指定session名称,如下新建了一个名为toby
的session
root@hcss-ecs-279f:~# screen -S toby
root@hcss-ecs-279f:~# screen -ls
There are screens on:
1538.toby (04/09/2025 05:03:09 PM) (Attached)
1489.pts-3.hcss-ecs-279f (04/09/2025 04:45:13 PM) (Attached)
2 Sockets in /run/screen/S-root.
root@hcss-ecs-279f:~#
后台运行session
可以使用快捷键Ctrl+a d
来将当前session转为Detached状态,这样退出系统后,下次可以使用-r
选项来恢复session。
提示 Ctrl+a d
的操作方法是先按Ctrl和a,然后再按d
恢复session
使用-r [pid.sessionname]
选项可以重新恢复指定session,使用pid
或sessionname
都可以。
screen -r 1538
#or
screen -r toby
退出session
使用exit
即可退出当前session,或者使用快捷键Ctrl+a k
杀死当前session。
Really kill this window [y/n]
还可以使用-X
选项将quit命令传递给指定session,如下:
root@hcss-ecs-279f:~# screen -ls
There are screens on:
1634.pts-4.hcss-ecs-279f (04/09/2025 05:27:19 PM) (Detached)
1589.toby (04/09/2025 05:16:03 PM) (Detached)
1489.pts-3.hcss-ecs-279f (04/09/2025 04:45:13 PM) (Detached)
3 Sockets in /run/screen/S-root.
root@hcss-ecs-279f:~# screen -R 1589 -X quit
root@hcss-ecs-279f:~# screen -ls
There are screens on:
1634.pts-4.hcss-ecs-279f (04/09/2025 05:27:19 PM) (Detached)
1489.pts-3.hcss-ecs-279f (04/09/2025 04:45:13 PM) (Detached)
2 Sockets in /run/screen/S-root.
screen快捷键
screen提供了功能丰富的快捷键,可以方便键盘侠便捷使用。
screen默认快捷键可以使用Ctrl+a
来调用,先按Ctrl+a
,然后按?
即可出现默认快捷键提示。
Screen key bindings, page 1 of 2.
Command key: ^A Literal ^A: a
break ^B b history { } other ^A split S
clear C info i pow_break B suspend ^Z z
colon : kill K k pow_detach D time ^T t
copy ^[ [ lastmsg ^M m prev ^H ^P p ^? title A
detach ^D d license , quit \ vbell ^G
digraph ^V lockscreen ^X x readbuf < version v
displays * log H redisplay ^L l width W
dumptermcap . login L remove X windows ^W w
fit F meta a removebuf = wrap ^R r
flow ^F f monitor M reset Z writebuf >
focus ^I next ^@ ^N sp n screen ^C c xoff ^S s
hardcopy h number N select ' xon ^Q q
help ? only Q silence _
[Press Space for next page; Return to end.]
Screen key bindings, page 2 of 2.
^] paste .
" windowlist -b
- select -
0 select 0
1 select 1
2 select 2
3 select 3
4 select 4
5 select 5
6 select 6
7 select 7
8 select 8
9 select 9
I login on
O login off
] paste .
| split -v
:kB: focus prev
[Press Space or Return to end.]
There is no screen to be resumed matching XX错误
如下,由于意外断网导致上次的session(989.ls)还处于Attached状态,但使用screen -r 989
恢复时会提示无法成功
root@hcss-ecs-279f:~# screen -ls
There is a screen on:
989.ls (04/09/2025 04:16:31 PM) (Attached)
1 Socket in /run/screen/S-root.
root@hcss-ecs-279f:~# screen -r 989
There is a screen on:
989.ls (04/09/2025 04:16:31 PM) (Attached)
There is no screen to be resumed matching 989.
root@hcss-ecs-279f:~#
这是因为同样一个session无法重复attached,解决方法时先使用screen -d 989
将其detach,然后再使用screen -r 989
重新attach session。
root@hcss-ecs-279f:~# screen -d 989
[989.ls detached.]
root@hcss-ecs-279f:~# screen -ls
There is a screen on:
989.ls (04/09/2025 04:16:31 PM) (Detached)
1 Socket in /run/screen/S-root.
root@hcss-ecs-279f:~# screen -r 989
一些screen用例
#Debian #Vps #Screen #Linux #Session #会话管理 #Attached #Detached