1500字范文,内容丰富有趣,写作好帮手!
1500字范文 > Linux的screen工具库实现多终端

Linux的screen工具库实现多终端

时间:2020-10-10 21:29:29

相关推荐

Linux的screen工具库实现多终端

screen简介

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

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

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

screen安装与使用

安装

sudo apt install screen 安装screen

索引

screen -ls# 该命令也可以查看是否安装成功

创建新的终端

screen -S dosname

连接对应名称终端

screen -r namescreen -D -r name # 关闭上一哥终端开启新的终端

总结

新建窗口

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 quitscreen -S 会话名称 -X quit

清除死去窗口

通过命令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启动项目

该项目的接口

@RestControllerpublic class TestController {//@ConfigurationProperties读取配置文件转java对象@Autowiredprivate Method method;//@Value直接读取属性@Value("${method.header}")private String header;//Environment对象遍历读取@Autowiredprivate 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");}}

浏览器端访问

当断开服务后

浏览器无法访问

那么如何持久化任务呢?这就需要借助screen

新终端重新运行项目

Ctrl+A+D退出该终端

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

这是浏览器访问任何成功访问即实现了简单的持久化

可以通过screen -S -X yourname quit来强制停掉。

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。