跑代码时ssh中断怎么恢复?

1 前言

今天要和大家介绍的是一个在Linux系统中人称挂机神器的screen工具。为什么我们会需要这个工具呢?请匹配自己在通过ssh远程连接服务器的时候是否出现过以下烦恼:

  • 正在运行某个程序,由于网络不好ssh突然中断了,再次连接ssh后发现程序进程还在后台,但就是恢复不到程序的运行界面;
  • 运行某个程序时需要打开多个终端运行后台service服务,而你又不想每次连接ssh后都做这个繁琐的工作,希望能这些服务能够在服务器上一直运行着,哪怕是重新连接后也能恢复到对应的运行窗口;

如果你也遇到过上述类似情况,那请你赶快试试screen。

2 安装

1.1 在线安装

如果你的电脑能够连接外网,那么直接执行如下命令即可:

  • Ubuntu

    sudo apt-get install screen
    
  • Centos

    yum -y install screen
    

1.2 离线安装

如果你的电脑并不能够连接外网,那我们就以离线的方式进行安装:

  • 第一步:下载安装包

    打开链接 https://ftp.gnu.org/gnu/screen/ 下载一个最近几年版本的都行,此处以screen-4.6.0.tar.gz为例。

  • 第二步:解压安装包

    • 在安装包所在的目录执行如下命令

      tar -zxvf screen-4.6.0.tar.gz
      
    • 进入到解压后的目录

      cd screen-4.6.0/
      
  • 第四步:配置相应环境

    ./configure
    

    如果执行完./configure命令没有出现错误提示,那么直接进入到步骤六,如果有错误则需要安装ncurses这个包。

  • 第五步:安装ncurses(可选)

    同样打开链接 https://ftp.gnu.org/gnu/ncurses,下载ncurses安装包,然后解压并安装

    # 解压
    tar -zxvf ncurses-6.2.tar.gz
    
    # 进入到解压后的目录
    cd ncurses-6.3
    
    # 配置环境
    ./configure
    
    # 编译与安装软件(大概需要2分钟左右)
    make && make install
    

第六步:安装screen

  • 第四步没有错误提示

    • 执行如下命令即可完成安装

      make && make install
      
  • 第四步出现过错误提示

    • 再次回到目录screen-4.6.0中, 然后执行如下命令

      ./configure
      make && make install
      

3 使用方法

如果安装成功后,输入screen -v即可看到类似如下提示信息:

Screen version 4.06.02 (GNU) 23-Oct-17

3.1 新建虚拟窗口

通过命令screen -S nulls即可以创建一个名为nulls的虚拟窗口,创建完成后也会默认进入到这个窗口。在这个窗口中可以做任何你想做的事情。假如你此时运行一个程序后,就可以选择以快捷键ctrl+a+d暂时退出此窗口。并且还可以再建新的窗口来做其它的事情。

3.2 查看当前窗口

完整内容点击:你最好还是了解一下screen神器!

例如这里可以看到,笔者的主机上有两个窗口,其状态均为Detahed,也就是退出的状态。

3.3 恢复窗口

如果有状态为Detached的窗口,则我们可以通过命令screen -r nulls来进行恢复(如果是两个同名的窗口,则需要根据前面的id来进行恢复)。执行完命令后,我们就能够恢复到你上次退出nulls窗口时的状态。此时我们再执行screen -ls就会看到如下信息:

nulls@moon-hotel:~$ screen -ls
There are screens on:
        84937.nulls     (09/14/20 02:29:24)     (Attached)
        22270.docc      (09/12/20 08:24:56)     (Detached)

可以看到,nulls这个窗口的状态已经变成了Attached,即当前我们正在这个窗口中。

3.4 中断后恢复

如果我们正在使用某个窗口时,突然ssh终端了,此时我们重新连接ssh并输入screen -ls命令后能看到如下提示信息:

nulls@moon-hotel:~$ screen -ls
There are screens on:
        84937.nulls     (09/14/20 02:29:24)     (Attached)
        22270.docc      (09/12/20 08:24:56)     (Detached)

可以发现,窗口nulls的窗体仍旧是Attached。但是此时如果再用screen -r nulls进行恢复则会出现如下提示:

There is a screen on:
        84937.nulls     (09/14/20 02:29:24)     (Attached)
There is no screen to be resumed matching nulls.

此时,我们就需要先Detached窗口nulls,然后再对其进行恢复:

完整内容点击:你最好还是了解一下screen神器!

3.5 命令总结

说了这么多,其实总结起来也就是5个命令的使用,多用几次也就记住了。

# 1. 创建窗口
screen -S name

# 2. 查看窗口
screen -ls

# 3. 退出窗口
按 ctrl + a + d

# 4. 恢复窗口
screen -r name

# 5. Detached窗口
screen -d name

完整内容点击:你最好还是了解一下screen神器!

4 总结

在这篇文章中,笔者首先简单的介绍了如何安装screen工具;然后再介绍了如何使用screen,以及一些常见场景的对应处理办法。

本次内容就到此结束,感谢您的阅读!若有任何疑问与建议,请添加笔者微信’nulls8’进行交流。青山不改,绿水长流,我们月来客栈见!

©️2020 CSDN 皮肤主题: 编程工作室 设计师:CSDN官方博客 返回首页