CentOS 用screen 在后台运行程序

百般思念 提交于 2021-02-03 07:27:10

我们常需要SSH 或者telent 远程登录到Linux 服务器,经常运行一些需要很长时间才能完成的任务,在此期间不能关掉窗口或者断开连接,否则这个任务就会被杀掉,一切半途而废了。这时,我们可以用screen命令解决这个问题。

screen命令可以实现当前窗口与任务分离,我们即使离线了,服务器仍在后台运行任务。当我们重新登录服务器,可以读取窗口线程,重新连接任务窗口。

screen 的使用

安装

yum -y install screen

新建窗口

新建一个窗口有3种方法:

①直接执行screen指令

screen

 TIPS:这样就可以新建窗口,进入到一个窗口中,但是这样窗口就没有名字了,无法区分他们。

②带名称启动 screen -S name

screen -S name

 TIPS:这样新建一个名字为name的窗口,并进入到该窗口中。

例如:screen -S lorawan-server  这样就新建了一个名叫lorawan-server的窗口并进入。

③带命令执行screen command

screen command

TIP: 这样新建一个窗口并在窗口中执行command命令,同样是没有名字。

例如:screen lorawan-server 新建并执行 lorawan-server 了程序。

会话分离

我们在一个窗口运行某个程序之后,想退出登录关闭terminal干点别的事,让程序在后台运行。这时就需要和窗口会话分离,有2种方式:

①快捷键 Ctrl a 表示进入命令模式

 TIPS:在当前会话窗口中按 Ctrl a +d 快捷键可以实现分离,这时窗口会弹出[detached]的提示,并回到主窗口。 

②screen -d name #远程detach某个session,前提是已经跳出了name窗口

恢复会话窗口

首先查看有哪些窗口正在运行

screen -ls

 

打开窗口

screen -r 8075

 TIPS:进入8075线程,恢复lorawan-server会话窗口,这样就能回到lorawan-server窗口了。

杀死会话窗口

如果想关掉一个多余的窗口,有3种方法: 

①kill -9 threadnum

kill -9 threadnum

 例如:在上面的8075,kill -9 8075 即可杀死线程,当然就杀死了窗口

② 使用Ctrl a +k 杀死当前窗口和窗口中运行的程序

 TIPS: 使用Ctrl a 然后输入quit命令退出Screen会话。需要注意的是,这样退出会杀死所有窗口并退出其中运行的所有程序

清除死去的窗口

当窗口被杀死后,再用screen -ls 可以看到该窗口后面的(???dead)字样,说明窗口死了,但是仍在占用空间。这时需要手动清除窗口 :

screen -wipe

 TIPS:自动清除死去的窗口,这样的窗明几净了~。

screen断网 重连

screen -D; screen -r

 TIPS:断网后重新连接终端并恢复至原来的状态。

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!