• 【Linux Screen命令】Linux用户注销后可长时间运行的命令行


    1. 使用情境

    你有没有这样的经历:你有一台远程计算机,并在上面执行长时间运行的任务,突然连接断开,SSH 会话终止,而导致你的工作进度丢失。
    幸运的是,有一个名为 Screen 的实用程序可以让我们持续会话。甚至是远程计算机用户注销的情况下程序依然在后台运行。

    使用情境:

    1. 远程计算机,需要长时间执行一个程序任务。
    2. 远程计算机,拥有多个用户,频繁登入登出不同账户。需要在一个账户下长时间执行一个程序任务。

    2. 安装 Screen

    在开始使用“screen”之前,您需要确保它已安装在您的 Linux 服务器上。大多数现代 Linux 发行版都预装了“screen”,但如果您的系统上没有它,您可以使用特定于您的发行版的包管理器轻松安装它。

    对于基于 Debian/Ubuntu 的系统,请使用以下命令:

    sudo apt-get update
    sudo apt-get install screen
    
    • 1
    • 2

    对于 Red Hat/CentOS 系统,请使用:

    sudo yum install screen
    
    
    • 1
    • 2

    对于 Arch Linux,请使用:

    sudo pacman -S screen
    
    
    • 1
    • 2

    3. 基本用法

    3.1 创建Screen

    在控制台中输入 screen 就可以打开一个屏幕会话,创建一个新窗口,并在该窗口中启动一个 shell。但是我强烈建议在创建 Screen 的时候给这个会话取一个名字(后期会话多了之后会分不清)。把 替换成你想取的名字。比如:screen -S app

    screen -S 
    
    • 1

    现在您已经创建了一个screen的屏幕会话。

    3.2 执行程序

    你可以在新弹出的命令行中执行你的程序,然后甚至关掉命令行窗口。
    如果你想screen在后台运行,只需要输入

    Ctrl+a d
    
    • 1

    脱离会话后,在screen会话中运行的程序将继续运行。

    3.3 查看Screen

    在过了一段时间后,你想查询程序运行的情况或者结果如何。你只需要在命令行中输入:

    screen -ls
    
    • 1

    就会列出screen正在运行的会话:

    There are screens on:
        10835.app  (Detached)
        10366.pts-0.linuxize-desktop   (Detached)
    2 Sockets in /run/screens/S-linuxize.
    
    • 1
    • 2
    • 3
    • 4

    可以看到当前有两个会话正在运行,其中一个就是我们刚创建的叫app的会话。如果想恢复/查看app会话的内容只需要输入:

    screen -r 10835
    
    • 1

    3.4 结束会话

    如果你想结束一个screen会话,还是以app会话为例,你只需要输入:

    screen -XS 10835 quit
    
    • 1

    此时再用 screen -ls 查看时 app 会话将不复存在。

    4. 高级用法

    以下是管理 Linux Screen Windows 的一些最常用命令:

    Ctrl+a c 创建一个新窗口(带shell)。
    Ctrl+a " 列出所有窗口。
    Ctrl+a 0 切换到窗口 0(按编号)。
    Ctrl+a A 重命名当前窗口。
    Ctrl+a S 将当前区域水平分割为两个区域。
    Ctrl+a | 将当前区域垂直分割为两个区域。
    Ctrl+a tab 将输入焦点切换到下一个区域。
    Ctrl+a Ctrl+a 在当前窗口和上一个窗口之间切换
    Ctrl+a Q 关闭除当前区域之外的所有区域。
    Ctrl+a X 关闭当前区域。

    本文记录screen的基本用法,更多详细用法可以参考这里

    Reference

    [1] https://linuxize.com/post/how-to-use-linux-screen/
    [2] https://askubuntu.com/questions/356006/kill-a-screen-session

  • 相关阅读:
    2311d导入c的语义不同
    聚合函数(基础版)
    express在nodejs中的基本使用
    LLVM之父Chris Lattner:模块化设计决定AI前途,不服来辩
    JavaEE企业开发新技术1
    你在前端有做过哪些性能优化
    n皇后学习
    极简OpenFoam编程
    steam卡价越来越高,steam搬砖项目还能玩么?
    【2】c++11新特性(稳定性和兼容性)—>超长整型 long long
  • 原文地址:https://blog.csdn.net/qq_41608408/article/details/134045251