Linux的screen管理工具的概念和使用理解

在Linux系统中,screen 是一种终端复用工具,它允许用户在一个终端会话中运行多个会话并在它们之间切换,而无需中断工作进程。

这个工具对于远程工作、长时间运行的任务和管理多个会话非常有用。

 

通俗解释:

你可以把 screen 想象成一个虚拟的“窗口管理器”或“多任务管理器”,它让你能够在一个SSH会话中运行多个任务,并且可以在这些任务之间切换,就像你在操作一个操作系统时切换不同的窗口一样。

如果你关闭了SSH连接,screen 仍然会继续在后台运行,不会影响你的任务。

主要概念:

  1. 会话(Session): 每个 screen 会话类似于一个独立的终端,它可以包含多个窗口。
  2. 窗口(Window): 在一个 screen 会话中,可以创建多个窗口,每个窗口可以运行一个命令或程序,类似于多开多个终端。
  3. 分离(Detach)和恢复(Attach): 你可以将当前的 screen 会话分离(detach)到后台,让它继续运行,然后在需要时恢复(attach)回来,不会丢失之前的进度。

举例说明:

假设你在远程服务器上工作,并且正在运行一个长时间的任务,比如编译一个大型程序。你可能需要关闭SSH连接或断开网络,但又不希望任务中断。这时,你可以使用 screen

1、你首先启动一个 screen 会话:

screen

2、在这个 screen 会话中,你启动了编译任务(例如,make 命令)。

make

3、假设任务需要几个小时完成,你不想一直保持SSH连接打开。此时,你可以分离当前的 screen 会话:

Ctrl + A, D  # 这将分离screen会话并返回到普通的shell提示符

4、你可以关闭SSH连接或执行其他操作,任务仍然在后台运行。

5、当你重新连接到服务器时,你可以恢复之前的 screen 会话:

screen -r

6、如果你想同时运行多个任务,比如同时编译程序并查看日志文件,可以在 screen 会话中创建多个窗口:

Ctrl + A, C  # 创建一个新的窗口

7、切换窗口:

Ctrl + A, N  # 切换到下一个窗口
Ctrl + A, P  # 切换到上一个窗口

通过这种方式,screen 让你能够在一个终端会话中高效地管理多个任务,并且不会受到网络断开或终端关闭的影响。

 

如何更改已有的screen会话名称呢?

在 Linux 的 screen 中,默认的会话名称是随机生成的,但可以在创建会话时通过 -S 参数为其指定一个有意义的名称。如果需要更改已经存在的 screen 会话的名称,可以通过以下步骤完成:

1. 查看当前 screen 会话列表

首先列出服务器上正在运行的 screen 会话:

screen -ls

示例输出:

There are screens on:
    12345.pts-0.server205 (Detached)
    67890.pts-1.server205 (Detached)
2 Sockets in /run/screen/S-user.

上面的 1234567890 是会话的标识符,后面是当前的名称。

 

2. 重新命名现有的 screen 会话

如果某个会话已经存在,但名字不符合要求,你可以进入该会话并修改名称。

  1. 进入指定会话(用会话标识符或名字):

screen -r 12345

  2.更改会话名称: 在 screen 会话内,使用以下命令:

Ctrl + A, :sessionname 新名字

例如:

Ctrl + A, :sessionname deploy_service_A

更改后,退出会话即可(使用 Ctrl + A, D 分离)。

  3.再次查看确认

screen -ls

 

3. 按规则重新创建 screen 会话(可选)

如果需要从头创建新的会话并命名:

screen -S 新名字

 

示例:

screen -S deploy_service_A

在新会话中,可以运行所需的服务或功能。分离时,使用 Ctrl + A, D

 

如何用 screen 部署服务呢?

以下是用 screen 部署服务的完整过程:

1.创建一个新的 screen 会话并命名

创建一个命名为 filescompare_v1 的会话:

screen -S filescompare_v1

2.启动服务
screen 会话中运行你的服务:

uvicorn filescompare_v1:app --reload --host 0.0.0.0 --port 9017 > uvicorn_v1.log 2>&1

注意,这里不需要使用 nohupscreen 本身会保证服务在后台运行。

3.分离 screen 会话
按以下快捷键分离会话,让服务在后台继续运行:

Ctrl + A, D
 

4.恢复指定的 screen 会话:

screen -r filescompare_v1

5.终止服务

如果需要终止服务,只需进入会话并正常关闭服务,或者直接关闭会话:

screen -X -S filescompare_v1 quit

6.进入服务内部

screen -D -r conriskreco
  • -D 会强制断开其他终端对 conriskreco 的连接。
  • -r 重新附加到你的当前终端。

 

posted @ 2025-01-22 11:28  AlphaGeek  阅读(212)  评论(0)    收藏  举报