Linux screen后台任务介绍

Linux screen后台任务介绍

Screen主要用在耗时较长的操作,如编译大包程序,如果不用screen,在编译过程中,如果断开ssh,编译也会中断。
但是使用screen,就相当于后台任务,即使关闭编译窗口,编译还是继续执行。

我目前的工作是用在Android系统源码的编译环境中。
一般都是临下班,创建一个screen任务,隔天过来看编译结果。

本文只介绍screen的常用操作。

一、安装screen:

检查是否安装:

rpm -q screen

这个检查安装的命令不一定使用所有环境,
最简单的方法就是输入screen看看是否能识别,就知道环境里面是否安装了screen。

安装:
以centos为例,debian系的就用apt

yum install screen


需要管理员权限才可以安装,但是一般环境是会安装有的。

二、创建screen

在执行耗时操作时,先打开screen会话。

会话名,是为这个screen会话定义一个名字,方便下次回到这个会话,
当然,也可以直接执行screen,不加任何参数,通过会话id来回到这个会话。

1、screen

系统会默认设置一个会话名,不用担心,因为每个会话名都是有时间搓的。

2、screen -S 会话名

启动新的screen会话后,执行你需要的操作。

三、退出当前screen会话:

输入命令:exit

退出后,这个会话就结束了,无法进入了。

四、获取所有会话列表:

输入命令:screen -ls

这个命令会返回所有会话的id以及会话名
比如:

First_Test$ screen -ls

There are screens on:
        186256.project0817      (2021年08月17日 20时15分46秒)   (Attached)
        110759.20210814 (2021年08月14日 12时39分25秒)   (Detached)
        258777.pts-0.R740-861   (2021年08月05日 18时22分58秒)   (Detached)
3 Sockets in /var/run/screen.


这里能查看到存在三个screen任务,Attached表示有窗口打开,Detached表示未打开窗口。
如果exit之后,就不会看到信息了。

186256.project0817 //第一个小数点前面表示进程id,后面表示进程名称,默认生成的进程名称可能包括小数点。

五、进入某个会话

screen -r session_name           # 回到session_name这个session

进入之前的screen会话(如果已经在该会话里,就进不去了):

比如要进入会话258777.pts-0.R740-861,可以使用命令:


screen -r 258777.pts-0.R740-861
screen -r pts-0.R740-861

六、把会话任务退到后台,并且返回之前界面

在每个screen session下,ctrl+a+d为较常用的操作,
作用为:将任务挂起放入后台执行,并会回到还没进 screen 时的状态,此时即使logout也不影响。

七、语法和常用命令

1、完整语法

screen [-AmRvx -ls -wipe][-d <作业名称>][-h <行数>][-r <作业名称>][-s ][-S <作业名称>]

参数说明

-A  将所有的视窗都调整为目前终端机的大小。
-d <作业名称>  将指定的screen作业离线。
-h <行数>  指定视窗的缓冲区行数。
-m  即使目前已在作业中的screen作业,仍强制建立新的screen作业。
-r <作业名称>  恢复离线的screen作业。
-R  先试图恢复离线的作业。若找不到离线的作业,即建立新的screen作业。
-s  指定建立新视窗时,所要执行的shell。
-S <作业名称>  指定screen作业的名称。
-v  显示版本信息。
-x  恢复之前离线的screen作业。
-ls或–list  显示目前所有的screen作业。
-wipe  检查目前所有的screen作业,并删除已经无法使用的screen作业。

2、常用screen参数

screen 新建当前时间的任务
screen -S yourname -> 新建一个叫yourname的session
screen -ls -> 列出当前所有的session
screen -r yourname -> 回到yourname这个session
screen -d yourname -> 远程detach某个session
screen -d -r yourname -> 结束当前session并回到yourname这个session

总结:

最常用的三个:
screen 创建当前时间任务
screen -ls 查看之前任务
screen -r XXX 恢复上次任务回话

其他的基本不用。

共勉:时间是总会过去的,所有不要让以后留下遗憾。

猜你喜欢

转载自blog.csdn.net/wenzhi20102321/article/details/122890088
今日推荐