screen——让任务在linux后台运行

常常需要在linux远程服务器上运行一些任务,这些任务并不是短时间内就可以完成的,一旦关闭终端(terminal)窗口或者断开链接,任务就会被杀死;或者我们想要同时运行多个任务,但又不想开多个终端窗口,怎么办?

这时候screen就派上用场了,它能实现任务和当前窗口的分离,即使你关掉了当前窗口,只要服务器还在运行,任务就依旧在后台运行;借助screen还能在当前窗口同时开始多个任务。

一般的linux系统都会自带screen,如果没有安装的话,使用如下命令进行安装

sudo apt-get install screen

或sudo yum install screen

我主要是为了让tensorboard服务、jupyter服务等长期在远程服务器上后台运行,才使用screen的。这涉及到一些基础的screen操作,如下所述,亲测可行。

1 查看有哪些会话窗口正在运行

# 在命令行输入如下命令
screen -ls

# 终端返回结果示例
There is a screen on:
        28114.tensorboard       (12/18/19 05:53:27)     (Detached)
1 Socket in /var/run/screen/S-root.

这说明有一个会话窗口在后台运行,该会话的编号是28114(用户新建窗口后系统给的),名称是tensorboard(用户新建窗口时指定的)       

2 新建窗口,并进入到这个窗口。(就相当于新开了一个terminal窗口,然后就可以执行任何你想要的命令行操作了)

# 在命令行输入如下命令(其中gbl_jupyter在我自己起的名字)
screen -S gbl_jupyter

3 退出会话窗口,但希望任务继续运行,请使用快捷键 ctrl-a-d

   这其实就是执行了分离命令detach,在保证里面的程序正常运行的情况下让Screen挂起(切换到后台)

4 重新恢复/进入一个窗口

screen -r 28114 # 28114是你想进入的会话窗口的编号

5 将窗口从atached状态转换为detached状态

screen -d 28114

6 关掉/杀死 某个窗口

screen -S 28114 -X quit

7 清除所有dead掉的窗口

窗口后面有(???dead)字样,说明窗口死了,但是仍在占用空间

screen -wipe

除了上述操作,screen还有一些好玩的功能,比如会话共享,也就是说你可以和其他人同时从不同的终端进行到同一个会话,这时候你们看到的界面是完全一样的,你可以看到他正在以多快的速度敲代码,他也可以看到你输入的命令行操作,亲测可行,嘻嘻嘻,很好玩的=-=

发布了34 篇原创文章 · 获赞 20 · 访问量 6万+

猜你喜欢

转载自blog.csdn.net/G_B_L/article/details/103596737