screen的使用

原文:https://www.vpser.net/manage/screen.html

VPS侦探在刚接触Linux时最怕的就是SSH远程登录Linux VPS编译安装程序时(比如安装lnmp)网络突然断开,或者其他情况导致不得不与远程SSH服务器链接断开,远程执行的命令也被迫停止,只能重新连接,重新运行。相信现在有些VPSer也遇到过这个问题,今天就给VPSer们介绍一款远程会话管理工具 - screen命令

一、screen命令是什么?

Screen是一个可以在多个进程之间多路复用一个物理终端的全屏窗口管理器。Screen中有会话的概念,用户可以在一个screen会话中创建多个screen窗口,在每一个screen窗口中就像操作一个真实的telnet/SSH连接窗口那样。

二、如何安装screen命令?

除部分精简的系统或者定制的系统大部分都安装了screen命令,如果没有安装,CentOS系统可以执行:yum install screen

Debian/Ubuntu系统执行:apt-get install screen

三、screen命令使用方法?

1、常用的使用方法

用来解决文章开始我们遇到的问题,比如在安装lnmp时。

1.1 创建screen会话

可以先执行:screen -S lnmp ,screen就会创建一个名字为lnmp的会话。 VPS侦探 https://www.vpser.net/

1.2 暂时离开,保留screen会话中的任务或程序

当需要临时离开时(会话中的程序不会关闭,仍在运行)可以用快捷键Ctrl+a d(即按住Ctrl,依次再按a,d)

1.3 恢复screen会话

当回来时可以再执行执行:screen -r lnmp 即可恢复到离开前创建的lnmp会话的工作界面。如果忘记了,或者当时没有指定会话名,可以执行:screen -ls screen会列出当前存在的会话列表,如下图:

11791.lnmp即为刚才的screen创建的lnmp会话,目前已经暂时退出了lnmp会话,所以状态为Detached,当使用screen -r lnmp后状态就会变为Attached,11791是这个screen的会话的进程ID,恢复会话时也可以使用:screen -r 11791

1.4 关闭screen的会话

执行:exit ,会提示:[screen is terminating],表示已经成功退出screen会话。VPS侦探 https://www.vpser.net/

2、远程演示

首先演示者先在服务器上执行 screen -S test 创建一个screen会话,观众可以链接到远程服务器上执行screen -x test 观众屏幕上就会出现和演示者同步。

3、常用快捷键

Ctrl+a c :在当前screen会话中创建窗口
Ctrl+a w :窗口列表
Ctrl+a n :下一个窗口
Ctrl+a p :上一个窗口
Ctrl+a 0-9 :在第0个窗口和第9个窗口之间切换


### Linux `screen` 命令使用教程 #### 什么是 `screen`? `screen` 是一个全屏窗口管理器,允许用户在一个终端会话中创建多个独立的虚拟终端。它特别适合于需要长时间运行的任务场景,在网络不稳定或者意外断开连接的情况下,可以确保任务不会中断。 --- #### 如何安装 `screen`? 大多数现代 Linux 发行版默认已预装 `screen`。如果未安装,可以通过包管理器进行安装: 对于基于 Debian 的系统: ```bash sudo apt-get install screen ``` 对于基于 RedHat 的系统: ```bash sudo yum install screen ``` --- #### 创建一个新的 `screen` 会话 通过以下命令创建并进入一个新的 `screen` 会话: ```bash screen -S session_name ``` 其中 `session_name` 可以是你自定义的名字,方便后续识别该会话[^1]。 --- #### 查看当前存在的 `screen` 会话 当有多个 `screen` 会话时,可以用以下命令查看所有正在运行的会话列表: ```bash screen -ls ``` 这将返回类似于以下的结果: ``` There are screens on: 12345.session_name (Detached) 67890.another_session (Attached) 2 Sockets in /run/screen/S-user. ``` 这里 `(Detached)` 表示会话处于分离状态,而 `(Attached)` 则表示会话已被某个终端占用[^2]。 --- #### 进入已有 `screen` 会话 如果有已经创建好的 `screen` 会话,可以直接重新附加到这个会话上: ```bash screen -r session_name ``` 如果是唯一的一个可恢复会话,则无需指定名字,直接运行: ```bash screen -r ``` 如果存在多个可用会话,需明确指出具体会话名或 PID(进程 ID),例如: ```bash screen -r 12345 ``` --- #### 分离当前 `screen` 会话 在不退出程序的前提下离开当前 `screen` 会话,只需按下快捷键组合 **Ctrl+A**, 然后再按 **D** 键即可实现脱离操作。此时会看到提示信息: ``` [detached from 12345.session_name] ``` --- #### 终止某 `screen` 会话 要在内部终止整个 `screen` 会话及其子进程,可以在对应会话下输入以下命令: ```bash exit ``` 或者直接关闭最后一个打开的窗口也会自动结束此会话。 另外还可以强行杀死特定会话: ```bash screen -X -S session_name quit ``` --- #### 其他常用选项说明 | 参数 | 功能描述 | |------|----------| | `-A` | 调整所有视窗至当前终端尺寸大小 | | `-d` | 将指定屏幕作业置于后台模式 | | `-h <行数>` | 设置缓冲区保留的最大历史记录行数 | | `-m` | 即使已经有活动中的 screen 实例也强制新建另一个实例 | | `-R` | 首选尝试恢复最近一次被分离掉的 session;如果没有找到则启动新的 session | | `-s` | 定义新开启 shell 类型,默认 bash 或 sh | | `-v` | 显示版本号及相关版权信息 | | `-x` | 同时接入已经被其他地方 attach 上去的那个 session | 更多高级功能可通过阅读手册页获取更多信息: ```bash man screen ``` --- ### 总结 以上就是关于如何利用 `screen` 来管理和维护远程服务器上的长期运行任务的基础指南。借助这些技巧,你可以更加高效地处理那些可能因网络波动而导致失败的工作流程。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值