前端开发入门到精通的在线学习网站

网站首页 > 资源文章 正文

Linux screen命令用法(linux查看screen)

qiguaw 2025-01-23 20:25:07 资源文章 19 ℃ 0 评论

`screen` 是一个强大的终端多路复用器,允许用户在一个终端会话中同时运行和管理多个独立的会话。它特别适用于需要在远程服务器上运行长时间任务的场景,即使网络连接中断,任务仍能继续执行,用户可以随时重新连接并恢复会话。


## 一、`screen` 命令的主要作用


1. **多会话管理**:在一个终端窗口中创建、切换和管理多个独立的会话。

2. **会话持久化**:即使断开连接,`screen` 会话仍在后台运行,用户可以随时重新连接。

3. **任务管理**:方便地启动和管理多个后台任务,如编译、服务器进程等。

4. **共享会话**:多个用户可以共享同一个 `screen` 会话,适用于协作和教学。


## 二、`screen` 的安装


在大多数 Linux 发行版中,`screen` 通常已经预安装。若未安装,可以使用以下命令进行安装:


- **Debian/Ubuntu 系统**:


```bash

sudo apt-get update

sudo apt-get install screen

```


- **CentOS/RHEL 系统**:


```bash

sudo yum install screen

```


- **macOS (使用 Homebrew)**:


```bash

brew install screen

```


## 三、`screen` 的基本用法


### 1. 启动 `screen`


```bash

screen

```


这将启动一个新的 `screen` 会话,并进入该会话的终端环境。


### 2. 分离会话


按下 `Ctrl + A`,然后按 `D` 键,可以将当前会话分离(detach),使其在后台运行。


### 3. 查看当前会话


```bash

screen -ls

```


此命令会列出所有当前运行的 `screen` 会话。


### 4. 重新连接会话


```bash

screen -r [会话ID]

```


其中 `[会话ID]` 可以通过 `screen -ls` 命令查看。例如:


```bash

screen -r 12345.pts-0.hostname

```


### 5. 创建命名会话


为了方便管理,可以为会话指定一个名称:


```bash

screen -S mysession

```


### 6. 终止会话


在 `screen` 会话内,输入 `exit` 或按 `Ctrl + D`,即可终止当前会话。


## 四、`screen` 的高级用法


### 1. 多窗口管理


在一个 `screen` 会话中,可以创建多个窗口,每个窗口都是一个独立的终端。


- **创建新窗口**:按下 `Ctrl + A`,然后按 `C` 键。

- **在窗口之间切换**:

- 下一个窗口:`Ctrl + A`,然后按 `N` 键。

- 上一个窗口:`Ctrl + A`,然后按 `P` 键。

- 直接切换到指定窗口编号:`Ctrl + A`,然后输入窗口编号(如 `0`、`1` 等)。

- **列出所有窗口**:按下 `Ctrl + A`,然后按 `"` 键,出现窗口列表可选择。


### 2. 分屏显示


`screen` 允许在同一个终端窗口中水平或垂直分割屏幕,显示多个子窗口。


- **水平分割**:


```bash

Ctrl + A + S

```


- **垂直分割**(需要 `screen` 支持):


```bash

Ctrl + A + | (可能需要配置或使用新版本的 `screen`)

```


- **在分割的屏幕间切换**:


```bash

Ctrl + A + Tab

```


- **关闭当前分割屏幕**:


```bash

Ctrl + A + X

```


### 3. 滚动缓冲区


在 `screen` 会话中,可以查看之前的输出内容。


- **进入复制模式**:


```bash

Ctrl + A + [

```


- **滚动浏览**:使用箭头键或 `Page Up` / `Page Down`。


- **退出复制模式**:


```bash

Esc

```


### 4. 日志记录


`screen` 可以记录会话的所有输出内容。


- **启动日志记录**:


```bash

Ctrl + A + H

```


记录的日志默认保存在当前目录下,文件名为 `screenlog.0`。


- **停止日志记录**:


再次按下 `Ctrl + A + H`。


### 5. 共享会话


允许多个用户连接到同一个 `screen` 会话,适用于协作和教学。


1. **启动共享会话**:


```bash

screen -S sharedsession

```


2. **允许其他用户连接**:


其他用户使用以下命令连接到该会话:


```bash

screen -x [您的用户名]/sharedsession

```


需要确保文件权限和用户权限配置正确。


## 五、示例说明


### 示例一:在远程服务器上运行长时间任务


1. **连接到远程服务器**:


```bash

ssh user@remote-server

```


2. **启动一个 `screen` 会话**:


```bash

screen -S longtask

```


3. **运行长时间任务**,例如编译程序:


```bash

make

```


4. **分离会话**,让任务在后台继续运行:


```bash

Ctrl + A + D

```


5. **断开连接**,即关闭 SSH 会话。


6. **稍后重新连接并恢复会话**:


```bash

ssh user@remote-server

screen -r longtask

```


### 示例二:在一个 `screen` 会话中运行多个任务


1. **启动 `screen` 会话**:


```bash

screen -S multitask

```


2. **创建第一个窗口并运行任务**:


- 默认在窗口 0 中。

- 例如,启动一个 Python HTTP 服务器:


```bash

python3 -m http.server 8000

```


3. **创建第二个窗口**:


```bash

Ctrl + A + C

```


- 进入新窗口(窗口 1)。

- 运行另一个任务,例如 `top` 实时监控系统资源:


```bash

top

```


4. **在窗口之间切换**:


- 从窗口 0 切换到窗口 1:


```bash

Ctrl + A + N

```


- 或直接切换到指定窗口编号:


```bash

Ctrl + A + 0

Ctrl + A + 1

```


5. **分离会话**,保留所有任务在后台运行:


```bash

Ctrl + A + D

```


6. **重新连接并查看任务状态**:


```bash

screen -r multitask

```


### 示例三:共享 `screen` 会话进行协作


1. **用户 A 启动共享会话**:


```bash

screen -S sharedsession

```


2. **用户 A 授予其他用户访问权限**:


```bash

chmod 770 /var/run/screen/S-$(whoami)

```


需要根据系统配置和安全策略调整权限。


3. **用户 B 连接到共享会话**:


```bash

screen -x userA/sharedsession

```


4. **现在,用户 A 和用户 B 可以在同一个 `screen` 会话中协作操作**。


## 六、常用 `screen` 命令总结


- **启动 `screen`**:


```bash

screen

screen -S session_name

```


- **查看所有会话**:


```bash

screen -ls

```


- **重新连接会话**:


```bash

screen -r [session_id]

```


- **分离会话**:


```bash

Ctrl + A + D

```


- **创建新窗口**:


```bash

Ctrl + A + C

```


- **切换窗口**:


```bash

Ctrl + A + N (下一个)

Ctrl + A + P (上一个)

Ctrl + A + [0-9] (指定窗口)

```


- **进入复制模式**:


```bash

Ctrl + A + [

```


- **启动/停止日志记录**:


```bash

Ctrl + A + H

```


- **退出 `screen` 会话**:


在所有窗口中输入 `exit` 或使用 `Ctrl + D`。


## 七、注意事项


1. **自启动 `screen`**:可以通过在 shell 配置文件(如 `.bashrc`)中添加自动启动 `screen`,但需谨慎操作以避免重复会话。

2. **配置文件**:`screen` 的配置文件通常位于 `~/.screenrc`,可以通过编辑此文件来自定义快捷键、窗口命名等。

3. **安全性**:在共享会话时,确保权限和用户认证配置正确,避免未经授权的访问。


`screen` 是一个功能丰富且灵活的工具,熟练掌握其使用可以大幅提升终端操作的效率和便利性。结合实际需求,多练习和探索其高级功能,将有助于更好地完成各种任务管理和远程操作。

Tags:

本文暂时没有评论,来添加一个吧(●'◡'●)

欢迎 发表评论:

最近发表
标签列表