Linux的screen管理工具的概念和使用理解
在Linux系统中,screen 是一种终端复用工具,它允许用户在一个终端会话中运行多个会话并在它们之间切换,而无需中断工作进程。
这个工具对于远程工作、长时间运行的任务和管理多个会话非常有用。
通俗解释:
你可以把 screen 想象成一个虚拟的“窗口管理器”或“多任务管理器”,它让你能够在一个SSH会话中运行多个任务,并且可以在这些任务之间切换,就像你在操作一个操作系统时切换不同的窗口一样。
如果你关闭了SSH连接,screen 仍然会继续在后台运行,不会影响你的任务。
主要概念:
- 会话(Session): 每个
screen会话类似于一个独立的终端,它可以包含多个窗口。 - 窗口(Window): 在一个
screen会话中,可以创建多个窗口,每个窗口可以运行一个命令或程序,类似于多开多个终端。 - 分离(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.
上面的 12345 和 67890 是会话的标识符,后面是当前的名称。
2. 重新命名现有的 screen 会话
如果某个会话已经存在,但名字不符合要求,你可以进入该会话并修改名称。
-
进入指定会话(用会话标识符或名字):
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
注意,这里不需要使用 nohup,screen 本身会保证服务在后台运行。
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 重新附加到你的当前终端。

浙公网安备 33010602011771号