【Linux】Screen的使用:新建、退出、再登陆

news/2024/10/8 22:09:17 标签: linux, 运维, 服务器

Linux screen 命令详解与使用指南

在Linux系统中,screen 是允许用户在单个终端会话中运行多个进程,并能在会话之间切换。

适用情况:screen 特别适用于远程登录(如通过SSH)时,确保即使网络连接断开,正在运行的任务也不会中断。本文将详细介绍 screen 的安装、基本用法和常见技巧。

1. 安装 screen

在大多数Linux发行版中,screen 都包含在默认的软件库中。可以通过包管理器安装它:

Debian/Ubuntu
sudo apt-get install screen
Red Hat/CentOS
sudo yum install screen
Fedora
sudo dnf install screen
Arch Linux
sudo pacman -S screen

2. 用法

2.1、screen创建会话

创建一个具有指定名称的 screen 会话,方便管理和识别,启动后,你会看到一个新的终端会话,并且可以在其中运行任何命令。

screen -S my_session
2.2、离开会话 (Detach状态)

在 screen 会话中,可以使用快捷键  Ctrl+A+D  离开当前会话。分离会话后,可以安全地退出SSH或关闭终端,正在运行的任务不会中断。

2.3、连接会话 
2.3.1、连接会话 【Reattach状态的screen】

列出所有会话:screen -ls

输出示例:
There is a screen on:
    3969263.fastapi (2024年09月27日 08时43分52秒)   (Detached)
1 Socket in /run/screen/S-username.

使用 screen -r 命令重新连接到指定的会话:screen -r  3969263   或者  screen -r  fastapi

2.3.2、连接会话状【Attached状态的screen】
screen -D  -r your_screen_name  # 解释:-D -r 先踢掉前一用户,再登陆

2.4、切换会话

在一个 screen 会话中,可以创建多个窗口,并在它们之间切换:

  • 创建新窗口:Ctrl-a c
  • 切换到下一个窗口:Ctrl-a n
  • 切换到上一个窗口:Ctrl-a p
  • 列出所有窗口:Ctrl-a "

2.5、共享会话

screen 允许多个用户共享一个会话,这对于协作调试和教学非常有用:

  1. 启动共享会话:

    screen -S shared_session
    
  2. 启用多用户模式:

    Ctrl-a :multiuser on
    
  3. 添加用户权限:

    Ctrl-a :acladd username
    

另一个用户可以通过以下命令加入共享会话:

screen -x username/shared_session
2.6、日志记录

screen 可以将会话中的输出记录到文件:

  1. 启动日志记录:

    Ctrl-a H
    
  2. 停止日志记录:

    Ctrl-a H
    

日志文件将保存在当前用户的主目录下,默认文件名为 screenlog.0

2.7、删除screen
2.7.1、在screen中执行Ctrl+D删除

Ctrl+D  # 在当前screen下,输入Ctrl+D,删除该screen
Ctrl+A,Ctrl+D  # 在当前screen下,输入先后Ctrl+A,Ctrl+D,退出该screen
 

2.7.2、未进入screen的执行删除

# 删除指定screen, your_screen_name为待删除的screen name
screen -S your_screen_name -X quit

2.8、判断当前是否在screen下

# 判断当前是否在screen中断下,Ubuntu系统,可以这样:
sudo vim /etc/screenrc
# 文件末尾追加一行即可允许设置screen标题
caption always "%{.bW}%-w%{.rW}%n %t%{-}%+w %=%H %Y/%m/%d "
 

2.9、快捷键

screen 提供了一系列快捷键,使得在会话中的操作更加便捷:

  • Ctrl-a c:创建新窗口
  • Ctrl-a n:切换到下一个窗口
  • Ctrl-a p:切换到上一个窗口
  • Ctrl-a d:分离会话
  • Ctrl-a ":列出所有窗口
  • Ctrl-a 0-9:切换到指定编号的窗口
  • Ctrl-a k:关闭当前窗口
  • Ctrl-a A:重命名当前窗口

http://www.niftyadmin.cn/n/5694871.html

相关文章

Java 中的 LinkedHashMap

让我们从一个简单的 Java 代码片段开始,演示如何在 Java 中创建和使用 LinkedHashMap。 import java.util.LinkedHashMap; public class LinkedHashMapCreation { public static void main(String[] args) { // Create a LinkedHashMap of S…

【QT Quick】基础语法:文件定义类型与枚举类型

这节课我们讨论的是在 QML 中使用文件定义类型以及枚举类型的相关内容。我们主要关注如何通过 QML 文件创建自定义类型,并将其作为属性变量使用,以及如何使用枚举类型来规范化代码中的一些常量。这些概念对提升 QML 编程的可维护性和灵活性非常有帮助。下…

Windows 开发工具使用技巧 QT使用安装和使用技巧 QT快捷键

一、QT配置 1. 安装 Qt 开发框架 1、下载 1、进入下载地址 下载地址1 (官方, 需注册账号): https://www.qt.io/download下载地址2(推荐): http://download.qt.io/http://download.qt.io/archive/qt/ (或更直接的…

程序员 -买房历险记

快生日了,自己又又 涨了一岁 买房 真不是 一件简单的事。 一. 买房 三大核心问题 1.一手/二手 房 2.哪个城市买 3.哪个地方买 我调研的是 三四线城市(俺的老家) 二. 买房需要 花多少(看得到/看不到) 比如 4000元…

今日份总结

今天了解到一个知识点 认证和授权 RBAC模型 这是一个绝大多数人都会混淆的问题。首先先从读音上来认识这两个名词,很多人都会把它俩的读音搞混,所以我建议你先先去查一查这两个单词到底该怎么读,他们的具体含义是什么。 说简单点就是&…

Vue3+TS项目 - ref和useTemplateRef获取组件实例

在Vue2中,子组件使用的是选项式 API ,被引用的组件实例和该子组件的 this 完全一致,这意味着父组件对子组件的每一个属性和方法都有完全的访问权。这使得在父组件和子组件之间创建紧密耦合的实现细节变得很容易,当然也因此&#x…

C++笔记之标准库和boost库中bind占位符_1的写法差异

C++笔记之标准库和boost库中bind占位符_1的写法差异 code review! 参考博文: C++新特性探究(十五):bind 在C++中,_1 和 std::placeholders::_1 都用于表示占位符,但它们有不同的上下文:

cnn突破八(两层卷积核bpnet网络扩展)

cnn突破七中x【?】怎么求?我们举个例子: 接着cnn突破七: hicnn【】来自temphicnn【】2*2最大池化: temphicnn[0]x[i0,j0,5*5方阵]*w1cnn[0-24], hicnn是5*5的,temphicnn是10*10的&#xff0…