Linux命令:Screen 让长时间作业任务后台运行不中断

编辑于:2023年03月25日

Linux命令:Screen 让长时间作业任务后台运行不中断

执行 Screen 命令,可以避免远程连接服务器运行系统备份、scp传输、编译安装等长时间才能完成的任务时,因网络突然掉线或者关掉窗口导致任务中断。

1. 安装Screen

1.1 安装状态

which screen

执行如上命令,如果没有任何结果返回,说明你的 linux 系统并没有安装 Screen

1.2 开始安装

#CentOS系统
yum install screen

#Debian和Ubuntu系统
apt-get install screen

根据自己系统种类,选择其中一种命令执行,为服务器安装 Screen

2. 使用方法

2.1 运行Screen

假设我们要为服务器执行一个需长时间执行的任务,通过 Xshell 等软件连接服务器,可以执行如下命令,开启一个名为 cccitu 的新窗口,然后再执行编译任务或其它需长时间后台运行的任务。

screen -S cccitu

也可以通过如下命令执行后台运行+执行命令的操作

screen -dmS 名称 执行任务的命令
screen -dmS cos start_migrate.sh #后台执行一个名为cos的任务

2.2 语法参数

-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.3 列出所有任务窗口

screen -ls

2.4 恢复连接

如果 cccitu 任务还在执行,但是网络掉线了或自己以外关闭了Xshell 窗口,可以重新连接服务器,执行如下命令重新打开刚才的进程

screen -r cccitu

如果出现screen session 的状态为 Attached 但是却连不上的情况,可执行如下命令:

screen -D -r name #name 为 screen ID 可用命令 screen -ls 查看

2.5 删除失效

检查目前所有的 screen 作业,并删除已经无法使用的 screen 作业。

screen -wipe

2.6 中断任务并删除窗口

screen -S name -X quit #name 为 screen ID 可用命令 screen -ls 查看

3. 高级使用

以上是一个基础用法,更为详细的方法可以参考《Screen:后台不中断执行命令详解

相关推荐

暂无评论