使用screen在后台离线运行程序(linux服务器)

目录

一. screen的背景

二. screen的定义

三. screen的功能

四. screen的状态

五. screen的命令集

六. 参考


一. screen的背景

GNU计划:最早Unix发布,其高效率的交互迅速获得大家青睐;但是,随后Unix宣布闭源,以及商业收费后,自然会有一个新的系统来替代。于是,就有了GNU计划(英语:GNU Project),又译为革奴计划。GUN是一个自由软件集体协作计划,始创于1983年,它的目标是创建一套完全自由的操作系统,称为GNU,也就是我们俗称的Linux系统,后续的Debian、CentOS也是基于Linux开发的发行版本。而screen就在首批GNU计划内。

GNU Screen:简称Screen或screen,是一款由GNU计划开发的用于命令行终端切换的自由软件,初始版本早在1987年就发布。其官网:GNU Screen。

二. screen的定义

screen是一个可以在多个线程之间多路复用一个物理终端的全屏窗口管理器,可以看作是窗口管理器的命令行界面版本,它提供了统一管理多个会话的界面和相应的功能。用户可以在一个screen会话中创建多个screen窗口,同时连接多个本地或远程的命令行会话,并在其间自由切换,在每一个screen窗口中就像操作一个真实的SSH连接窗口那样。

我们常需要SSH或者telent远程登录到Linux服务器,有时运行需要很长时间才能完成的任务,在此期间不能关掉窗口或者断开连接,否则这个任务就会被终止。这时,我们可以用screen命令解决这个问题。screen命令可以实现当前窗口与任务窗口分离,我们即使离线了,服务器仍在后台运行任务。当我们重新登录服务器,可以读取窗口线程,重新连接任务窗口。

三. screen的功能

1. 会话恢复:只要screen本身没有终止,在其内部运行的会话都可以恢复。这一点对于远程登录的用户特别有用——即使网络连接中断,用户也不会失去对已经打开的命令行会话的控制。只要再次登录到主机上执行screen -r就可以恢复会话的运行。同样在暂时离开的时候,也可以执行分离命令detach,在保证里面的程序正常运行的情况下让screen挂起(切换到后台)。

2. 多窗口:在screen环境下,所有的会话都独立的运行,并拥有各自的编号、输入、输出和窗口缓存。用户可以通过快捷键在不同的窗口下切换,并可以自由的重定向各个窗口的输入和输出。

3. 会话共享:screen可以让一个或多个用户从不同终端多次登录一个会话,并共享会话的所有特性(比如可以看到完全相同的输出)。它同时提供了窗口访问权限的机制,可以对窗口进行密码保护。

四. screen的状态

通常情况下,screen创建的虚拟终端,有两个工作模式:

  • Attached:表示当前screen正在作为主终端使用,为活跃状态
  • Dettached:表示当前screen正在后台使用,为非激发状态

五. screen的命令集

1. 安装(在管理员权限下)

(sudo) apt-get install screen

2. 帮助查询

查询自己需要的命令

screen -help

使用screen在后台离线运行程序(linux服务器)_第1张图片

3. 创建终端

name是你自己起的名字

screen -S name

4. 终端列表

查看已经创建的screen(在后台运行的终端)

screen -ls

5. 挂起(保持会话退出)

快捷键命令:先同时按Ctrl+A然后按D键,即可保持这个screen到后台独立运行并回到主终端

6. 重连终端

重新进入到运行的项目窗口,如果没有对应名称的PID或者Name时,会自动创建新的虚拟终端

screen -R/-r pid/name[虚拟终端PID或Name]

7. 清除终端(kill)

当不需要某个虚拟终端,要释放资源时,可以进入对应终端,输入exit,就会回到主终端。

exit

也可以在主终端内,使用命令释放:

# 使用-R/-r/-S均可
screen -R [pid/Name] -X quit

8. 指定离线

将指定的screen离线。

screen -d pid

如果网络断了,使用screen -r恢复会话时会出现以下问题:

There is no screen to be resumed matching错误解决办法

因为screen还是处于Attached状态,而1个screen无法同时打开2次,所以无法重新打开screen。因此需要先使用screen -d pid退出,然后再使用screen -r pid重新连接。

六. 参考

Linux终端命令神器--Screen命令详解。助力Linux使用和管理 - 腾讯云开发者社区-腾讯云 (tencent.com)https://cloud.tencent.com/developer/article/1844735

你可能感兴趣的:(服务器,服务器,linux,运维)