超算小站 超算小站
首页
  • 注册账号
  • 登录系统
  • 熟悉系统
  • 配置环境
  • 数据管理
  • 作业管理
  • 集群软件环境:

    • 01.编译环境
    • 02.基础库
    • 03.应用软件
    • 04.工具软件
    • 05.常用语言环境
    • 06.使用进阶
  • 入门课程

    • 01.超算历史
    • 02.VPN登录
    • 03.Mobaxterm工具
    • 04.Linux基本命令
    • 05.Module环境变量管理工具
    • 06.Vim文本编辑器使用
    • 07.Slurm作业管理系统
HPC&AI
  • 01.登录问题
  • 02.编译问题
  • 03.作业问题
  • 04.存储和数据问题
  • 05.GPU问题
资料下载
归档
关于我
🚀试用
首页
  • 注册账号
  • 登录系统
  • 熟悉系统
  • 配置环境
  • 数据管理
  • 作业管理
  • 集群软件环境:

    • 01.编译环境
    • 02.基础库
    • 03.应用软件
    • 04.工具软件
    • 05.常用语言环境
    • 06.使用进阶
  • 入门课程

    • 01.超算历史
    • 02.VPN登录
    • 03.Mobaxterm工具
    • 04.Linux基本命令
    • 05.Module环境变量管理工具
    • 06.Vim文本编辑器使用
    • 07.Slurm作业管理系统
HPC&AI
  • 01.登录问题
  • 02.编译问题
  • 03.作业问题
  • 04.存储和数据问题
  • 05.GPU问题
资料下载
归档
关于我
🚀试用
  • 编译环境

  • 基础库

  • 应用软件

  • 工具软件

    • citrix 安装记录及报错记录
    • 如何使用TACC launcher来批量提交串行任务
    • slurm作业管理系统怎么用?
    • Collectl在天河系统上的使用
    • WinSCP软件使用简介(支持断点续传)
    • Linux使用:screen
      • 背景
      • 工具
      • 方法
      • 举例
      • 命令参数表
      • 命令参数详解
        • 查看命令是否存在
        • 创建并进入
        • 退出
        • 查看列表
        • 恢复
        • 删除
      • 实战教学
      • 进阶内容
        • 参考
      • 附录
        • screen内中文输出乱码
        • screen 命令查询
  • 常用语言环境

  • 使用进阶

  • 软件中心
  • 工具软件
郑刚
2021-12-21
目录

Linux使用:screen

# 背景

解决痛点:ssh 终端断掉!

# 工具

GNU Screen简称Screen或screen,源自GNU计划。

主要功能:

  1. 会话恢复:只要 screen 命令本身没有终止,那么内部运行的会话就可以恢复。
  2. 会话管理:基于 screen 创建和管理多个会话。
  3. 会话共享。

# 方法

1、登录远程终端后,使用 screen -R 会话名 创建一个新的会话,然后正常使用即可。

2、如果终端断掉,再次连接是,我们使用 screen -R 会话名 即可恢复之前的会话。

# 举例

1、登录到系统,创建会话,正常使用

# 登录到系统
[zhenggang@ln1%tianhe ~]$ 

# 创建一个 screen 会话
[zhenggang@ln1%tianhe ~]$ screen -R work
[zhenggang@ln1 ~]$ 

# 正常使用
[zhenggang@ln1 ~]$ date
Tue Dec 21 08:53:45 CST 2021
1
2
3
4
5
6
7
8
9
10

2、正常退出会话

# 退出该会话并删除
[zhenggang@ln1 ~]$ exit
# 显示:[screen is terminating]

# 或者退出该会话并保持
# 使用快捷键:按住 ctrl + a,然后(继续安装 ctrl 的情况话)再按 d
# 显示:[detached]
1
2
3
4
5
6
7

3、意外退出或终端断掉情况下,重新登录到系统,并链接回之前的会话

# 登录到系统
[zhenggang@ln1%tianhe ~]$ 

# 连接到之前的 screen 会话
[zhenggang@ln1%tianhe ~]$ screen -R work
[zhenggang@ln1 ~]$ 
1
2
3
4
5
6

这样就可以继续之前的工作了,

# 命令参数表

screen,通常的命令格式为:

screen [-opts] [cmd [args]]
1
功能 命令 功能说明
查看 screen -ls 查看已有会话列表(Attached 表示活跃,Detached 表示非活跃)
创建并进入 screen 直接创建一个会话
创建并进入 screen -S work 创建一个新会话 work 并进入,如果该会话名已存在,则会创建一个新的同名会话
创建并进入 screen -R work 创建一个新会话 work 并进入,如果该会话名已存在,则会直接进入
退出 ctrl + a ,然后按 d 按快捷键 ctrl + a,然后 按 d 退出当前会话
恢复 screen -r work 回到名为 work 的会话,如果该会话不存在,则会创新一个名为 work 的会话
删除 screen -r work ,然后 exit 先进入名为 work 的会话,然后通过 exit 进行删除
删除 screen -R work -X quit 直接通过命令删除名为 work 的会话

# 命令参数详解

# 查看命令是否存在

$ which screen
/usr/bin/screen
1
2

如果没有正常显示 screen 命令的路径,说明该命令没有安装,使用管理员账号 root 进行安装。

如果是 redhat / centos 系统,使用 yum install screen 安装即可;如果是 ubuntu 系统,使用 apt-get install screen 命令即可。但是如果你没有系统管理员账号,请联系系统管理员吧。

# 创建并进入

方法1:直接输入screen 命令,即可创建会话。

$ screen
1

这样创建的会话名称是 随机名称(包含当前登录节点的 hostname )

方法2:使用 screen -S 会话名 创建会话,例如创建名为 work 的会话

$ screen -S work
1

如果之前存在同名的会话,则会创建新的同名会话

方法3:使用 screen -R 会话名 创建会话,例如创建名为 work 的会话(推荐!)

$ screen -R work
1

如果之前存在同名的会话,则会直接进入,因此推荐

# 退出

在已经进入某一个由 screen 创建的会话时:

方法1:可以直接输入 exit 命令,退出当前会话,并删除该会话。

$ exit
1

方法2:也可以通过快捷键先按 ctrl+a,(保持按住ctrl的状态)再按d,退出当前会话,但该会话不会被删除。

# 查看列表

$ screen -ls
1

状态说明:

  • Attached:表示当前screen正在作为主终端使用,为活跃状态。
  • Detached:表示当前screen正在后台使用,为非活跃状态。

# 恢复

# 使用 pid 或者 Name 恢复会话
$ screen -r [pid/Name]  # 命令格式
$ screen -ls 

# 先查看可用会话
$ screen -ls
There is a screen on:
        152350.work      (Attached)
1 Socket in /var/run/screen/S-zhenggang.
# 再恢复会话
$ screen -r 152350  # 使用 pid 恢复会话,如果不存在则会提示不存在
$ screen -r work    # 使用 Name 恢复会话,如果不存在则会提示不存在
$ screen -R work    # 尝试恢复名为 work 的会话,如果不存在则创建新的
1
2
3
4
5
6
7
8
9
10
11
12
13

# 删除

方法1:进入该会话,然后输出 exit (推荐)

# 进入会话
screen -R [pid/Name]
# 退出
exit
1
2
3
4

方法2:使用 screen 命令删除

# 使用-R/-r/-S均可
screen -R [pid/Name] -X quit
1
2

# 实战教学

按照如下方法重复几次,即可初步掌握 screen 的常用初级功能。

# 1、查看命令是否存在
# 如果没有正常显示 `screen` 命令的路径,说明该命令没有安装,使用管理员账号 `root` 进行安装。
# 如果是 redhat / centos 系统,使用 `yum install screen` 安装即可;如果是 ubuntu 系统,使用 `apt-get install screen` 命令即可。但是如果你没有系统管理员账号,请联系系统管理员吧。
$ which screen
/usr/bin/screen

# 2、直接输入 screen 命令创建并进入一个新的会话
$ screen
# 此时已经在该会话中了

# 3、使用 screen -ls 查看会话列表
# 看到有一个会话处于 Attached 状态
$ screen -ls
There is a screen on:
        226100.pts-39.ln1       (Attached)
1 Socket in /var/run/screen/S-zhenggang.
# 注意:226100.pts-39.ln1 是随机生成的会话名称,该名称不好记忆,因此不推荐直接使用 screen 进行创建

# 4、退出当前会话,并删除该会话
$ exit

# 5、查看会话列表
# 并未发现可用会话
$ screen -ls
No Sockets found in /var/run/screen/S-zhenggang.

# 6、使用  screen -R 会话名 创建会话,例如创建名为 work 的会话
$ screen -R work

# 7、使用 screen -ls 
$ screen -ls
There is a screen on:
        152350.work     (Attached)
1 Socket in /var/run/screen/S-zhenggang.

# 8、退出当前会话并保留该会话
# 通过 快捷键 ctrl + a ,再按 d ,退出该会话并保留该会话
# 屏幕会显示:[detached]

# 9、使用 screen -ls 
$ screen -ls
There is a screen on:
        152350.work     (Detached)
1 Socket in /var/run/screen/S-zhenggang.

# 10、通过 pid 回到该会话
$ screen -r 152350

# 11、再次使用 screen -ls 查看会话列表
# 此时该会话状态为 Attached
$ screen -ls
There is a screen on:
        152350.work      (Attached)
1 Socket in /var/run/screen/S-zhenggang.

# 12、再次使用快捷键退出并保存会话(快捷键 ctrl + a ,再按 d)
# 屏幕会显示:[detached]

# 13、通过 会话名 回到该会话
$ screen -r work

# 14、 再次使用 screen -ls 查看会话列表
# 此时该会话状态为 Attached
$ screen -ls
There is a screen on:
        152350.work      (Attached)
1 Socket in /var/run/screen/S-zhenggang.

# 15、使用 exit 命令 退出会话,并删除该会话
$ exit
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70

# 进阶内容

screen 还可以进行分屏、创建共享会话、会话加密解密等功能,在此不再赘述。

感兴趣的话,可以阅读相关博客文章,或者官方文档:

# 参考

  • Linux终端命令神器--Screen命令详解 (opens new window)
  • linux screen 命令详解 (opens new window)
  • screen 命令,Linux screen 命令详解 (opens new window)

# 附录

# screen内中文输出乱码

方法1:在创建和查看虚拟终端时,加上-U参数:

# 新建对话
$ screen -U -S new_screen
# 切换会话(utf8编码查看)
$ screen -U -r new_screen
1
2
3
4

方法2:修改配置文件

新建或修改文件:

$ vim ~/.screenrc
1

加入以下设置:

defutf8 on
defencoding utf8
encoding UTF-8 UTF-8
1
2
3

# screen 命令查询

$ screen -h
Use: screen [-opts] [cmd [args]]
 or: screen -r [host.tty]

Options:
-4            Use IPv4.
-6            Use IPv6.
-a            Force all capabilities into each window's termcap.
-A -[r|R]     Adapt all windows to the new display width & height.
-c file       Read configuration file instead of '.screenrc'.
-d (-r)       Detach the elsewhere running screen (and reattach here).
-dmS name     Start as daemon: Screen session in detached mode.
-D (-r)       Detach and logout remote (and reattach here).
-D -RR        Do whatever is needed to get a screen session.
-e xy         Change command characters.
-f            Flow control on, -fn = off, -fa = auto.
-h lines      Set the size of the scrollback history buffer.
-i            Interrupt output sooner when flow control is on.
-l            Login mode on (update /var/run/utmp), -ln = off.
-list         or -ls. Do nothing, just list our SockDir.
-L            Turn on output logging.
-m            ignore $STY variable, do create a new screen session.
-O            Choose optimal output rather than exact vt100 emulation.
-p window     Preselect the named window if it exists.
-q            Quiet startup. Exits with non-zero return code if unsuccessful.
-r            Reattach to a detached screen process.
-R            Reattach if possible, otherwise start a new session.
-s shell      Shell to execute rather than $SHELL.
-S sockname   Name this session <pid>.sockname instead of <pid>.<tty>.<host>.
-t title      Set title. (window's name).
-T term       Use term as $TERM for windows, rather than "screen".
-U            Tell screen to use UTF-8 encoding.
-v            Print "Screen version 4.00.03 (FAU) 23-Oct-06".
-wipe         Do nothing, just clean up SockDir.
-x            Attach to a not detached screen. (Multi display mode).
-X            Execute <cmd> as a screen command in the specified session.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
WinSCP软件使用简介(支持断点续传)
Co-Array Fortran 使用说明

← WinSCP软件使用简介(支持断点续传) Co-Array Fortran 使用说明→

Theme by Vdoing | Copyright © 2015-2024 Zheng Gang | MIT License | 津ICP备2021008634号
  • 跟随系统
  • 浅色模式
  • 深色模式
  • 阅读模式
×