欢迎光临
我们一直在努力

运维神器screen用法介绍

对于个人站长和VPS管理员来说,执行长时间运行的任务(如大型数据库备份、软件编译或系统更新)时,最担心SSH连接中断导致任务失败。Linux运维神器 screen(或者类似的 tmux)可以完美解决这个问题。

screen 是一个终端多路复用器(Terminal Multiplexer),它允许用户在一个 SSH 会话中创建和管理多个虚拟终端会话,并且最重要的是,即使您断开 SSH 连接,这些会话和其中运行的程序仍将继续在后台运行。

第一步:安装 Screen

大多数 Linux 发行版默认可能未安装 screen。根据您的系统类型,使用以下命令安装:

Debian/Ubuntu 系统:

sudo apt update
sudo apt install screen -y

CentOS/RHEL 系统:

sudo yum install screen -y
# 或者对于新系统
sudo dnf install screen -y

第二步:启动和命名会话

强烈建议在启动会话时为其命名,方便后续查找和管理。

1. 启动一个新的命名会话

假设我们要运行一个数据库备份任务,我们可以将其命名为 db_backup

screen -S db_backup

执行此命令后,您会进入一个新的虚拟终端界面。在这个界面中,您可以执行任何需要长时间运行的命令,例如:

# 模拟一个需要运行很长时间的脚本
./run_long_backup.sh

第三步:脱离(Detach)会话

当您的命令开始运行后,或者您需要暂时离开终端但又不希望任务中断时,您需要“脱离”当前的 screen 会话。

所有 screen 的控制命令都通过特定的组合键开始,默认为 Ctrl + a

脱离会话的快捷键:

按下 Ctrl + a,然后立即按下 d (detach)。

(Ctrl + a) + d

执行后,您将返回到原始的 SSH 终端,并会看到类似以下提示,表明您的会话已在后台运行:

[detached from 12345.db_backup]

第四步:查看和重新连接(Reattach)会话

您可以使用 screen -ls 命令查看当前所有正在运行的 screen 会话列表。

1. 列出所有会话

screen -ls

输出示例:

There are screens on:
12345.db_backup (Detached)
67890.update_os (Attached)
2 Sockets in /run/screen/S-username.

2. 重新连接会话

要重新进入名为 db_backup 的会话,使用 -r 选项加上会话名称或 PID:

screen -r db_backup
# 或者使用PID:
screen -r 12345

如果只有一个脱离的会话,也可以直接使用 screen -r

第五步:会话内窗口管理(高级用法)

screen 最强大的地方在于它允许在一个会话内创建多个窗口,就像浏览器标签页一样。

所有操作都需要先按下 Ctrl + a,然后是以下命令键:

命令 动作 描述
Ctrl + a c Create 创建一个新的窗口
Ctrl + a n Next 切换到下一个窗口
Ctrl + a p Previous 切换到上一个窗口
Ctrl + a “ List Windows 列出所有窗口,并允许选择切换
Ctrl + a k Kill Window 关闭当前窗口(如果这是最后一个窗口,则整个会话终止)
Ctrl + a A Title 命名当前窗口

例如,在 db_backup 会话中,您正在进行备份,但还想同时编辑一个配置文件,可以执行:

  1. 按下 Ctrl + a c 创建一个新窗口。
  2. 在新窗口中编辑文件:vim /etc/nginx/nginx.conf
  3. 按下 Ctrl + a p 切换回备份窗口查看进度。

第六步:结束会话

当会话内的所有任务完成后,直接退出终端(例如输入 exit 或按下 Ctrl + d)即可终止整个 screen 会话。

如果想强制终止一个脱离的会话(例如会话卡死),可以使用 -X quit 加上会话名称:

screen -X -S db_backup quit
【本站文章皆为原创,未经允许不得转载】:汤不热吧 » 运维神器screen用法介绍
分享到: 更多 (0)

评论 抢沙发

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址