首页 > 系统相关 >如何不中断连接保持linux服务器持续运行 —— screen 使用介绍

如何不中断连接保持linux服务器持续运行 —— screen 使用介绍

时间:2024-03-17 22:12:01浏览次数:23  
标签:窗口 name Ctrl screen 会话 linux 服务器 可以

 

请参考 ck's blog 以获取最佳观感

在 linux 服务器上跑模型的时候,有时会在终端会话中持续了一段时间后超时断开,或者因为意外情况断网,如果正常在命令行终端执行程序时,此时会中断程序的进行,这很恼火,这就意味着要让程序持续运行,就必须得保持主机和服务器的连接,程序跑一晚上,主机就得开一晚上,那我还要服务器干什么,为了解决这个问题, screen 是个及其有用的方法。

功能介绍

screen是一个非常强大的终端复用器,它在Linux和类Unix系统中有着广泛的用途。以下是screen的一些主要用途:

  1. 保持会话在断开连接后继续运行: 当你通过SSH等远程连接工具连接到服务器时,如果网络连接意外断开,你的工作可能会丢失。使用screen,即使远程连接断开,你的会话也会被保留,并且可以在重新连接后恢复。

  2. 多任务处理: screen允许你在一个终端窗口中创建多个会话(称为“窗口”),并在它们之间轻松切换。这对于同时运行多个进程或命令行任务非常有用。

  3. 协作工作: screen支持多个用户同时连接到同一个会话,这意味着你可以与团队成员协作工作,即使你们身处不同的地方。

  4. 脚本和自动化: screen可以与脚本结合使用,以自动化复杂的任务或流程。例如,你可以编写一个脚本来启动screen会话,运行特定的命令,然后在完成后自动关闭会话。

     

总之,screen是一个非常灵活且功能强大的工具,它能够提高你在Linux环境下的工作效率,特别是在远程工作和多任务处理方面。

下载与安装步骤

下载 screen 组件

# CentOS
yum install screen
# Debian/Ubuntu
apt install screen

如果此时发生报错:

image-20240315162038927

说明你没有 root 权限,你可以通过 sudo -s 获取 root 权限后再执行这个操作,如果你和我一样,作为服务器的使用者而不是拥有者,本身就没有 root 权限,可以通过下面的步骤安装^{[1]}:

(1)下载安装包到本地

apt-get download your-package-name

(2)安装到本地

dpkg -x your-package.deb your-dir

(3)将 screen 命令 添加到全局环境中

找到你本地用户的 ~/.bashrc 文件

vim ~/.bashrc # 输入i进入编辑模式
# 在.bashrc文件最后面,添加该路径,按esc 输入:wq 保存并退出
export PATH=$PATH:/your_dir/usr/bin/
source ~/.bashrc # 路径生效

在终端输入命令 screen -V ,显示如下界面,即为安装成功。

image-20240315160708591

 

screen 的使用

在终端窗口,输入命令 screen ,即可启动 screen ,创造一个对话。但如果你没有 root 权限,则会发生下面的报错:

image-20240315162932372

发生这个报错的原因是因为 screen 在运行过程中,需要在根目录下建立文件夹,而这个过程需要 root 权限,所以,我们选择改变 screen 运行过程中建立文件夹的路径即可^{[2]}:

(1) 建立 .screen 文件夹,并给予权限

mkdir ~/.screen && chmod 700 ~/.screen

(2) 将该路径添加到全局变量

export SCREENDIR=$HOME/.screen

(3) 运行生效

source ~/.bashrc

具体使用方法介绍

以下是一些基本的screen使用方法,部分参考^{[3-4]}:

  1. 启动新的screen会话: 你可以通过以下命令启动一个新的screen会话:

    screen -S session_name

    其中session_name是你给这个screen会话起的名字。

    如果你只输入了 screen 也可以启动一个会话,会自动命名,这里这个session_name 用处并不大,你既可以通过这个名字来访问会话,也可以通过 ID 来访问会话,而 ID 可以通过下条命令获取。

  2. 列出所有screen会话: 要查看当前运行的所有screen会话,可以使用:

    screen -ls

    image-20240315171453835

    如上图所示,这一命令显示了当前所有对话的 ID 、name 和状态,其中状态包括:

    • Attached:表示当前screen正在作为主终端使用,为活跃状态。

    • Detached:表示当前screen正在后台使用,为非激发状态。

  3. 暂时分离当前screen会话: 在screen会话中,按下Ctrl + A然后按D可以分离当前会话,即使你断开连接,会话也会继续运行。分离当前会话后, screen -ls 状态显示 Detached ,但这并不影响该会话执行的程序:

image-20240315171727243

  1. 重新连接到screen会话 and 连接其他会话: 如果你之前启动了一个screen会话,并且它还在运行,你可以使用以下命令重新连接到这个会话(注意,这是针对 Detached 状态的会话):

    screen -r session_name

    对于仍处于 Attached 状态的会话,可以直接采用如下命令连接:

    screen session_name

    如果你不确定会话的名称,可以使用会话ID代替,screen -ls命令会列出所有的会话ID。

  2. 退出screen会话: 要退出当前的screen会话,你可以在会话中输入:

    exit

    或者使用快捷键:

    Ctrl + D

    也可以在主终端内:

    screen -S [pid/Name] -X quit

    注意: 退出当前会话后,会话执行的程序会被中断,在执行 screen -ls 也无法找到该会话。

    image-20240315172034224

  3. 创建新的窗口: 在Screen环境下,一个对话可以创建多个窗口。用户可以通过快捷键在不同的窗口下切换,并可以自由的重定向各个窗口的输入和输出。在screen会话中,你可以创建多个窗口,使用以下命令:

    Ctrl + A Ctrl + C

    这将创建一个新的窗口,并且你可以在不同的窗口之间切换。

  4. 在窗口之间切换: 要切换到其他窗口,可以使用:

    Ctrl + A  数字键 0 - 9

    或者使用:

    Ctrl + A  ctrl + A
  5. 关闭当前窗口: 要关闭当前窗口,可以使用:

    Ctrl + A  K

     

这些是screen的一些基本用法。screen还有很多高级功能,比如复制粘贴文本、分屏显示等,可以通过查看screen的手册页(man screen)来获取更多信息。

 

参考博文

[1] https://www.cnblogs.com/yanqiang/p/13476546.html

[2] https://blog.csdn.net/csy294745333/article/details/104960857

[3] https://zhuanlan.zhihu.com/p/405968623

[4] https://blog.csdn.net/thumbcs/article/details/81072961

标签:窗口,name,Ctrl,screen,会话,linux,服务器,可以
From: https://www.cnblogs.com/ckern/p/18079291

相关文章

  • linux上编译release并剥离调试信息
    使用objcopy:1转载出处:https://unpluggedcoder.me/2014/04/24/%E7%94%9F%E6%88%90%E5%8F%AF%E8%B0%83%E8%AF%95%E7%9A%84Release%E7%89%88%E6%9C%AC%E4%BA%8C%E8%BF%9B%E5%88%B6%E6%96%87%E4%BB%B6--%E8%B0%83%E8%AF%95%E7%AC%A6%E5%8F%B7%E4%BF%A1%E6%81%AF%E6%8F%90%E5%8F%96......
  • linux libc.so.6软链接错误 导致ls等基础命令无法使用,系统无法登录
    转:linuxlibc.so.6软链接错误导致ls等基础命令无法使用_error:/lib64/libpthread.so.0:symbol__libc_dl_er-CSDN博客目录 一、背景说明二、处置步骤1、故障状态2、通过ls命令tab补全键查看文件列表3、查看glibc版本4、重建libc.so.6的软链接5、ssh远程连接报错6、......
  • 3.6 设置服务器来电后自动开机和设置服务定时开机
    3.6设置服务器来电后自动开机3.7设置服务定时开机 ......
  • Linux:系统初始化,内核优化,性能优化(1)
    我们安装好了一个服务器之后,一定要对他的系统,内核,性能一系列进行一个优化,否则当大并发的情况下很可能出现问题,我把要优化的东西直接罗列出来并介绍,后期可以直接编写一个脚本拿到服务器上直接用就行        设置时区我们在中国,一般选择的都是亚洲上海,在装服务器的时......
  • 常用conda和Linux命令
    常用conda命令condalist#查看安装的包condainstallxxx=版本号#安装指定版本号的包condauninstallxxx#删除某个包condaenvlist#查看所有环境condaactivateenv_name#进入名为env_name的环境condacreate--nameenv_namepython=3.5#创建指定python版......
  • BcLinux-Redis-集群(cluster)模式安装配置
    IP:192.168.0.28081、8082IP:192.168.0.3 8081、8082IP:192.168.0.4 8081、80821、三个节点同样操作[root@server-1setup]#yuminstalltcl或者:wgethttp://downloads.sourceforge.net/tcl/tcl8.6.1-src.tar.gztarxzvftcl8.6.1-src.tar.gz-C/home/local/cd/home/loc......
  • 使用linux三剑客取ip地址
    1,使用awk命令ifconfigens33(先试用ifconfig来查看IP地址在几行几列或者使用ip-a也可以)可以看到IP地址在第二列第二行,接下来使用awk命令来取出IP地址ifconfigens33|awk'{print$2}'|awk'NR==2{print$0}'(print$2打印出第二列)(print$0打印出一整行内容)(NR等......
  • Linux第81步_使用“互斥体”实现“互斥访问”共享资源
    1、创建MyMutexLED目录输入“cd/home/zgq/linux/Linux_Drivers/回车”切换到“/home/zgq/linux/Linux_Drivers/”目录输入“mkdirMyMutexLED回车”,创建“MyMutexLED”目录输入“ls回车”查看“/home/zgq/linux/Linux_Drivers/”目录下的文件和文件夹2、添加gpio_led节点......
  • C语言之Linux环境下学习(一)
    C语言目录C语言学习前言一、了解Linux环境二、Linux环境下编译helloworld.c1.初识Linux指令1.ls:查看当前路径内容2.cd:进入指定路径3.创建和删除文件夹:mkdir、rmdir4.创建文件:touch和gedit2.创建并编译helloworld.c文件前言创建Linux环境,并且在此环境中......
  • C语言之Linux环境下学习(三)
    本章节主要讲了数据类型、变量命名规则、运算符优先级。目录1.main函数2.注释:​编辑3.标准输入(scanf)和标准输出(printf)4.数据类型4.1整数型:4.2浮点型:5.运算符优先级6.字符常量7.运算符​编辑8.变量8.1全局变量局部变量1.main函数main函数是C语言程序的主......