如何使用Linux命令screen实现后台运行程序

但是又不想让它们占用当前终端的界面或者在SSH会话断开之后就停止运行。① 直接在当前terminal上启动输入以下指令即可创建一个新的screen窗口:

在Linux系统中,我们经常需要运行一些耗时长的程序,但是又不想让它们占用当前终端的界面或者在SSH会话断开之后就停止运行。这时候,就需要使用到一个非常实用的命令——screen。

Screen是一个终端多路复用工具,它可以在同一终端下开启多个窗口,并且每个窗口都相当于独立的控制台,可以执行各种操作。最重要的是,在离开当前SSH会话或关闭当前终端之后,这些窗口中正在进行的任务仍然会持续执行。

那么接下来我们就来详细介绍如何使用screen命令实现后台运行程序:

Step 1 – 安装Screen

首先,在大部分Linux发行版中都已经默认安装了Screen。但如果你不确定是否安装了Screen或者想要更新版本,则可以通过以下命令进行安装:

“`

sudo apt-get install screen

Step 2 – 启动新窗口

启动新窗口有两种方法:直接在当前terminal上启动、新建一个terminal再启动。

① 直接在当前terminal上启动

输入以下指令即可创建一个新的screen窗口:

screen

此时,会出现一个新的窗口。在这个窗口中可以执行任意命令,并且当前终端上的其他操作不会受到影响。

② 新建一个terminal再启动

如果你想在新terminal中启动screen,可以使用以下命令:

screen -S

其中,-S参数指定了这个Screen会话的名称。在后面我们会介绍到如何利用这个名称来管理Screen。

Step 3 – 运行程序

当你进入了一个Screen窗口之后,就可以像平常一样执行各种命令了。如果要运行某个耗时长的程序并且希望它在离开当前SSH会话或关闭当前终端之后仍然能够持续运行,则需要使用以下指令:

nohup &

其中,代表需要运行的程序名或者命令。&符号表示将该任务放到后台运行,并且不受当前Shell环境影响。

例如:

nohup python test.py &

这条指令将test.py文件以python解释器方式运行,并且放到后台持续执行。

如何使用Linux命令screen实现后台运行程序

Step 4 – 断开和重新连接

当你需要退出SSH连接或者关闭当前终端时,请注意不要直接使用exit等关键字退出,否则正在进行中的任务也将被杀死。

正确的做法是:

① 使用Ctrl+A,然后按下D键来暂时断开当前Screen会话。

② 当你需要恢复之前的Screen会话时,在终端中输入以下命令:

screen -r

其中,-r参数表示重新连接到之前的Screen会话。如果该会话没有指定名称,则可以使用以下命令直接恢复最新的一个Screen窗口:

screen -r

Step 5 – 管理和删除

当你创建了多个Screen窗口或者使用了-S参数指定了名称之后,就可以通过以下命令来管理和删除这些窗口:

① 列出所有正在运行的Screen会话

screen -ls

该命令将列出当前所有正在运行的Screen窗口,并且显示它们各自对应的编号、PID、状态以及名称等信息。

② 删除某个特定名称或编号对应的Session

如果需要关闭某个特定名称或编号对应的Session,则可以使用以下命令:

删除指定名字为session1 的 Screen 会话

“`bash

screen -S session1 -X quit

# 或者

# screen -S -X quit

其中-X选项表示向该屏幕发送一个控制字符序列。quit代表退出当前屏幕。

本文主要介绍了如何使用Linux中非常实用而强大的screen命令实现后台运行程序。通过使用该命令,我们可以在同一终端下开启多个窗口,并且在离开当前SSH会话或关闭当前终端之后,这些窗口中正在进行的任务仍然会持续执行。同时,我们还介绍了如何启动新窗口、运行程序、断开和重新连接以及管理和删除Screen会话。

希望本文能够对大家有所帮助!