• Linux的screen工具库实现多终端


    screen简介

    Linux screen命令用于多重视窗管理程序。Linux这种命令行模式的没办法直观的实现多终端运行。不像windows一样打开几个dos命令终端就可以同时多操作任务。Linux需要借助screen库。

    像Xshell之中基于SSH远程连接的软件,就相当于开启了一个dos终端,但是一旦断开,就关闭了命令窗口,任务也就停止了。利用SSH远程连接服务器,运行程序需要保证在此期间窗口不能关闭并且连接不能断开,否则当前窗口所运行的任务就被杀死。借助screen就可以实现简单的多窗口,来持久化任务。

    例如在配置spring boot项目上线时首先需要确定项目是可以正常运行的,在外网也可以访问到。这是如果基于SSH连接的使用java -jar - XXX.jar来运行项目,缺点是该连接不可以断开,但是使用screen技术就可以持久化的运行。

    screen安装与使用

    1. 安装
    sudo apt install screen 安装screen
    
    • 1
    1. 索引
    screen -ls
    
    # 该命令也可以查看是否安装成功
    
    • 1
    • 2
    • 3
    1. 创建新的终端
    screen -S dosname
    
    • 1
    1. 连接对应名称终端
    screen -r name
    
    screen -D -r name # 关闭上一哥终端开启新的终端
    
    • 1
    • 2
    • 3

    总结

    • 新建窗口

    1)可直接通过命令screen新建一个窗口,并进入窗口。但通过这种方式新建的窗口没有名字,只有系统分配给它的一个id。当需要恢复窗口时,只能通过id号来恢复。
    2)通过命令screen -S name,这样就可以新建一个名字为name的窗口,同样系统也会分配给它一个id,当恢复该窗口时既可以通过id号也可以通过窗口名。

    • 分离会话

    退出当前新建的窗口,通过快键键Ctrl+a+d实现分离,此时窗口会跳出[detached]的提示,并回到主窗口。

    • 恢复会话窗口
      首先查看当前有哪些screen窗口,通过命令:screen -ls 将列出窗口列表

    在这里插入图片描述
    可以通过以下命令恢复pyone窗口:screen -r pyonescreen -r 2739013

    • 杀死会话窗口
      通过命令kill -9 threadnum注意此处只能通过id号来杀死窗口。
    # 强制关闭
    screen -S -X yourname quit
    
    screen -S 会话名称 -X quit
    
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 清除死去窗口
      通过命令screen -wipe这个命令将自动清除所有处于dead状态的窗口

    • 退出回话

    a.完全退出回话杀死当前screen会话进程
    exit
    b.保持会话退出,这样退出的话,以后还可以通过screen -r (name)恢复会话,快捷命令
    ctrl A D

    参数:

    -A  将所有的视窗都调整为目前终端机的大小。

    -d  将指定的screen作业离线。

    -h  指定视窗的缓冲区行数。

    -m  即使目前已在作业中的screen作业,仍强制建立新的screen作业。

    -r  恢复离线的screen作业。

    -R  先试图恢复离线的作业。若找不到离线的作业,即建立新的screen作业。

    -s  指定建立新视窗时,所要执行的shell。

    -S  指定screen作业的名称。

    -v  显示版本信息。

    -x  恢复之前离线的screen作业。

    -ls或–list  显示目前所有的screen作业。

    -wipe  检查目前所有的screen作业,并删除已经无法使用的screen作业。

    Screen命令参数:
    -A -[r|R] 将所有的视窗都调整为目前终端机的大小。
    -c filename 用指定的filename文件替代screen的配置文件’.screenrc’.
    -d [pid.tty.host] 断开screen进程(使用该命令时,screen的状态一定要是Attached,也就是说有用户连在screen里)。一般进程的名字是以pid.tty.host这种形式表示(用screen -list命令可以看出状态)。
    -D [pid.tty.host] 与-d命令实现一样的功能,区别就是如果执行成功,会踢掉原来在screen里的用户并让他logout。
    -h <行数>   指定视窗的缓冲区行数。
    -ls或–list 显示目前所有的screen作业。
    -m 即使目前已在作业中的screen作业,仍强制建立新的screen作业。
    -p number or name 预先选择一个窗口。
    -r [pid.tty.host] 恢复离线的screen进程,如果有多个断开的进程,需要指定[pid.tty.host]
    -R 先试图恢复离线的作业。若找不到离线的作业,即建立新的screen作业。
    -s shell 指定建立新视窗时,所要执行的shell。
    -S <作业名称> 指定screen作业的名称。(用来替代[pid.tty.host]的命名方式,可以简化操作).
    -v 显示版本信息。
    -wipe 检查目前所有的screen作业,并删除已经无法使用的screen作业。
    -x 恢复之前离线的screen作业。

    项目持久化

    连接到linux并将spring boot项目上传

    在这里插入图片描述

    java -jar -XXX.jar启动项目

    在这里插入图片描述

    该项目的接口

    @RestController
    public class TestController {
    
        //@ConfigurationProperties读取配置文件转java对象
        @Autowired
        private Method method;
    
        //@Value直接读取属性
        @Value("${method.header}")
        private String header;
    
        //Environment对象遍历读取
        @Autowired
        private Environment environment;
    
    
        @GetMapping(value = "/title")
        public String method3(){
            String title = method.getTitle();
            return title;
        }
    
        @GetMapping(value = "/header")
        public String method4(){
            return header;
        }
    
        @GetMapping(value = "/one")
        public String method5(){
            return environment.getProperty("method.one");
        }
    
    
    }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24
    • 25
    • 26
    • 27
    • 28
    • 29
    • 30
    • 31
    • 32
    • 33
    • 34

    浏览器端访问

    在这里插入图片描述

    当断开服务后
    在这里插入图片描述
    浏览器无法访问

    在这里插入图片描述
    那么如何持久化任务呢?这就需要借助screen

    在这里插入图片描述

    新终端重新运行项目
    在这里插入图片描述

    Ctrl+A+D退出该终端

    在这里插入图片描述

    退出后如上图所示会提示存在一个pd.name的进程在运行,screen -ls也可以查看

    在这里插入图片描述
    这是浏览器访问任何成功访问即实现了简单的持久化

    在这里插入图片描述
    可以通过screen -S -X yourname quit来强制停掉。

  • 相关阅读:
    接口自动化测试用例如何设计
    java计算机毕业设计ssm+jsp成都美食推荐系统
    Go的安装及环境变量的配置
    各种排序算法的分析及java实现
    creo草绘图形技巧-透视图
    nacos docker compose安装配置
    APS系统的实施步骤,外行人都能看懂
    C++——二叉搜索树
    涂鸦云平台设备授权介绍
    EhLib VCL v11.0.021 for Delphi Crack
  • 原文地址:https://blog.csdn.net/xwh3165037789/article/details/126343135