Ubuntu高效管理终端会话:Screen命令详解与实战指南
目录~
- 前言
- 一、为什么需要Screen?
- 二、Screen部署与安装
- 1. 安装Screen
- 2. 验证安装
- 三、Screen核心命令速查表
- 四、Screen实战操作指南
- 1. 基础会话管理
- 2. 多窗口操作演示
- 3. 会话共享(协作模式)
- 五、高级管理技巧
- 1. 日志记录功能
- 2. 自定义配置
- 3. 自动化脚本示例
- 六、常见问题排查
- 七、应用场景推荐
前言
最近在跑FL代码时想要监测一下过程,看着print出来的数据实在有些难受,所以想使用tensorboard监测一下。因为使用ssh连接的关系,采用screen来创建多个“窗口”以此用一个窗口专门运行tensorboard进程。
一、为什么需要Screen?
在Linux服务器管理中,远程SSH连接中断导致的进程终止、需要同时维护多个终端会话、长时间任务监控等问题常常困扰运维人员。Screen作为终端复用神器,可以实现:
- 会话保持:网络中断后任务不终止
- 多窗口管理:单个SSH连接管理多个虚拟终端
- 会话共享:支持多用户协作操作
- 后台运行:让进程脱离终端独立运行
二、Screen部署与安装
1. 安装Screen
# Ubuntu/Debian系统
sudo apt-get update
sudo apt-get install screen -y
# CentOS/RHEL系统
sudo yum install screen -y
2. 验证安装
screen --version
# 应显示类似:Screen version 4.06.02 (GNU) 23-Oct-17
三、Screen核心命令速查表
命令 | 作用描述 |
---|---|
screen -S <名称> | 创建命名会话 |
screen -R <名称> | 如果名称已经存在,则恢复,否则创建会话 |
screen -r <名称/ID> | 恢复指定会话 |
screen -ls | 列出所有会话 |
screen -d | Detach活动中的会话 |
Ctrl+a d | 脱离当前会话(后台运行) |
Ctrl+a c | 创建新窗口 |
Ctrl+a n | 切换下一个窗口 |
Ctrl+a p | 切换上一个窗口 |
Ctrl+a " | 查看窗口列表 |
Ctrl+a [ | 进入滚动模式(ESC退出) |
screen -X -S <名称/ID> quit | 强制结束指定会话 |
这里根据需求不同,可以使用不同的参数来创建screen,如果想要创建多个同名的窗口,那就使用-S,这样就通过id和时间来区分。如果想要名称唯一,就使用-R创建。
当有多个同名screen时,使用screen -X -S <名称> quit就无法结束会话了
这个情况就需要通过指定前面的ID来关闭
screen -X -S 2073987 quit
四、Screen实战操作指南
1. 基础会话管理
# 创建名为"web_service"的会话
screen -S web_service
# 进行一些操作
# 脱离会话(保持后台运行)
Ctrl+a 然后按 d
# 查看活跃会话
screen -ls
# 输出:There is a screen on:
# 29176.web_service (Detached)
# 恢复会话
screen -r web_service
2. 多窗口操作演示
# 在会话中新建3个窗口
Ctrl+a c # 创建窗口1(默认编号0)
vim log.txt
Ctrl+a c # 创建窗口2(编号1)
top
Ctrl+a c # 创建窗口3(编号2)
ping baidu.com
# 窗口切换操作:
Ctrl+a n # 下一个窗口
Ctrl+a p # 上一个窗口
Ctrl+a 0 # 直接切换到编号0窗口
3. 会话共享(协作模式)
# 用户A创建共享会话
screen -S shared_session
# 用户B加入会话(需相同服务器账号)
screen -x shared_session
五、高级管理技巧
1. 日志记录功能
# 启动时开启日志记录
screen -L -S record_session
# 日志默认保存为screenlog.0
tail -f screenlog.0
2. 自定义配置
编辑~/.screenrc配置文件:
# 启用状态栏
hardstatus alwayslastline
hardstatus string '%{= kG}[ %{G}%H %{g}][%= %{=kw}%?%-Lw%?%{r}(%{W}%n*%f%t%?(%u)%?%{r})%{w}%?%+Lw%?%?%= %{g}][%{B}%Y-%m-%d %{W}%c %{g}]'
# 设置滚动缓冲区
defscrollback 5000
# 禁用启动欢迎信息
startup_message off
3. 自动化脚本示例
#!/bin/bash
screen -dmS auto_task sh -c 'python3 data_processing.py; exec bash'
六、常见问题排查
-
Screen会话无法恢复?
- 检查是否使用
r
参数 - 确认会话状态为Detached
- 尝试
screen -D -r session_name
强制恢复
- 检查是否使用
-
窗口显示异常?
# 重置会话终端类型 Ctrl+a 然后按 : 输入 exec /bin/bash
-
中文乱码问题
# 启动时指定编码 screen -U -S chinese_session
七、应用场景推荐
-
长时间运行任务
screen -S long_task # 因为我要监控tensorboard,所以就创建 tensorboard --logdir results/experiments --port 6006
-
关键进程监控
screen -S monitor top
本文地址:https://www.vps345.com/14206.html