前言

Linux中,我们经常会做一些关于数据的操作(备份、传输、压缩等)或是要在后台持续的运行一些程序。由于,工作的数据量很大或者工作要持续很长的时间,我们就必须保证这个终端的启动,一旦终端关闭了,它所运行的进程也会关闭,我们所做的工作就可能前功尽弃。但是,即使我们不主动的关闭终端,终端有的时候也会应为一些原因(网络、锁屏等)而中断,导致我们的工作进度清零。

有很多种方法,这里只介绍screen命令。

screen命令的优点

支持会话恢复

当我们开启screen后,只要screen进程没有终止,其内部运行的会话都可以恢复。网络连接中断临时,用户也可以进入开启的screen中,对中断的会话的进行控制(恢复或删除)。
通常的用法是在暂时离开的时候,让在screen中运行的会话保持正常运行并将Screen切换到后台。

支持多窗口

当使用screen时,可以开启多个窗口,让每个会话都独立运行到不同的窗口,并拥有各自的编号、名称等。用户可以通过这些编号及名称进入不同的窗口。

会话共享

Screen可以让一个或多个用户从不同终端登录一个会话,并共享会话。使用户登陆同一会话的用户看到同一会话内容。
同时它可以提供窗口访问权限的设置,对窗口进行密码保护。

screen的参数

-4             仅将主机名解析到IPv4地址
-6             仅将主机名解析到IPv6地址
-A            将所有的视窗适应当前终端屏幕的大小
-d            将指定的screen作业离线
-h lines      指定视窗的缓冲区行数
-m             即使目前已在作业中的screen作业,仍强制建立新的screen作业
-r             恢复(Reattach)离线(detach)的screen作业
-R            先试图恢复离线的作业。若找不到离线的作业,即建立新的screen作业
-s shell      建立新视窗时(使用shell,而不是$SHELL
-S             创建并指定screen作业的名称
-U             指定screen使用UTF-8编码
-v            显示版本信息
-x            进入(Attach)之前离线的screen作业
-ls或-list    显示目前所有的screen作业
-wipe         检查目前所有的screen作业,并删除已经无法使用的screen作业

screen最常用操作

screen启动后,会创建第一个窗口,默认窗口screen 0 (从0开始)

外观上看,就像是开了一个新的终端。

 新建一个作业

指定名字是为了便于区分

screen -S 作业名称

如:screen -S test 创建一个名字为test的作业

 列出当前所有的作业

screen -ls

 进入未离线(Attached)作业

screen -x 作业序号或者名称

screen -x 3985  #进入序号为3985的作业中
或者
screen -x test  #进入名称为test的作业中

 进入已离线(Detached)作业

screen -r 作业序号或者名称

screen -r 3985  #回到序号为3985的作业中
或者
screen -r test #回到名称为test的作业中

远程结束某个作业

screen -d 作业名称

screen -d test

screen中的命令用法

screen下使用ctrl+a进入命令模式

这里只讲一下退出命令:

退出screen的作业时,有两种方式:

  1. Crtl-a  +d     保存进程并退出作业(程序在screen中继续运行,screen -ls 可查看)
  2. Crtl-a + k 或exit    退出作业和进程(程序终止,screen -ls 不可查看)

参考链接:https://www.tok9.com/archives/256/

VPS Linux SSH 客户端断开后保持进程继续运行配置方法——screen的更多相关文章

  1. ssh连接断开后 shell进程退出

    问题描述:当SSH远程连接到服务器上,然后运行一个服务 ./catalina.sh start,然后把终端开闭(切断SSH连接)之后,发现该服务中断,导致网页无法访问.   解决方法:使用nohup命 ...

  2. linux ssh 经常断开 的解决方法

    1.现象 在linux ,用ssh进行远程连接时,经常会发生长时间后断线,或者是无响应,就像卡住的感觉(键盘输入不进去). 2.解决方法 在ssh客户端的linux设置 # sudo vim /etc ...

  3. SSH自动断开后重连的解决方案

    注:本文出自博主 Chloneda:个人博客 | 博客园 | Github | Gitee | 知乎 本文源链接:https://www.cnblogs.com/chloneda/p/ssh-conn ...

  4. (006)增加Blazor WebAssembly子站,推荐一个可视化linux ssh客户端FinalShell

    增加一个Blazor WebAssembly子站,并添加来回链接. 同时推荐一个好用的ssh客户端:FinalShell,windows用户再也不怕linux黑窗口不会用了:) * 支持直接命令行; ...

  5. LINUX SSH客户端的中文乱码问题

       原因在于文件/etc/sysconfig/i18n 这个文件是系统的区域语言设置, i18n是 国际化internationalization的缩写 i和n之间正好18个字母 解释: LANG= ...

  6. linux进程——后台运行的方法

    linux进程后台运行的几种方法: 我们经常会碰到这样的问题,用 telnet/ssh 登录了远程的 Linux 服务器,运行了一些耗时较长的任务, 结果却由于网络的不稳定导致任务中途失败. 如何让命 ...

  7. 重启虚拟机后dhclient进程未运行解决办法

    问题分析 重启虚拟机后,dhclient进程未运行的根因通常为: 1.NetworkManager未开启自启动导致的dhclient进程未运行 2.网卡设置未纳入NetworkManager管理导致的 ...

  8. 实战解读丨Linux下实现高并发socket最大连接数的配置方法

    摘要:Linux操作系统,无论是编写客户端程序还是服务端程序,在高并发TCP连接处理时,最高的并发数量都要受到系统对用户单一进程同时可打开文件数量的限制. [诉求场景] Linux操作系统,无论是编写 ...

  9. Linux下SSH远程连接断开后让程序继续运行解决办法

    一.screen安装 yum  install screen   #CentOS安装 sudo apt-get install screen #ubuntu安装 二.screen常用命令 screen ...

随机推荐

  1. shell程序---编译目录下全部.c或.cpp文件

    今天大波又提起昨天我说的那个程序.这样的,起初我想写一个makefile,每次写完新代码后一键编译目录下所有的.cpp文件. 原因是用makefile的话,每次要把目标文件加紧去才能编译.感觉不方便. ...

  2. python 2 与python 3 区别

    print def print(self, *args, sep=' ', end='\n', file=None): # known special case of print "&quo ...

  3. OVN架构翻译

    概述 ovn-controller是OVN在虚拟机上的agent,北向连接OVN的南向数据库,学习OVN的配置和状态,并使用虚拟机的状态来填充PN表以及Binding表的Chassis列:南向连接op ...

  4. OVS调试介绍

    基本概念 基本命令 ovs-vsctl # ovs-vsctl show 96a55a7e-f49c-4dbe-b359-bafdff2ccad7 Manager "ptcp:6640:92 ...

  5. 2017-9-9 NOIP模拟赛

    站军姿 2bc*cosA=b^2+c^2-a^2 #include<cstdio> #include<cstdlib> #include<cmath> #inclu ...

  6. Eclipse集成Git的实践

    最近一直在研究爬虫的相关技术,网上关于爬虫的教程实在是太少了,只能靠一些零零散散的博客资料做一个浅度的学习,我们已经学习了webcollector,htmlparser,Jsoup这些爬虫技术,并也成 ...

  7. [Java]HashSet的工作原理

    概述 This class implements the Set interface, backed by a hash table (actually a HashMap instance). It ...

  8. NOI2015程序自动分析 并查集

    有10^9个点,每次给出两个点的关系:权相等或不等,问最后能不能成立 感觉一开始在撕烤一个动态的问题,,,想写一个带权的并查集 结果发现静态询问,那就sb乱搞,懒得手写离散就直接map(卧槽好多细节忘 ...

  9. AspnetCore 2.0

    AspnetCore 2.0 本文地址 http://www.cnblogs.com/likeli/p/8204054.html 关于 API文档自动生成,用于对APP端的开发帮助文档生成,默认Pro ...

  10. git 本地新建分支Push到远程

    1. 本地新建分支,并切换到新的分支 git branch local_branch; git checkout local_branch; 2.第一条的命令也可以简单的一条命令来替代 git che ...