1 功能用途
一个视窗管理功能,可以在linux服务器挂起一个视窗进程,在我们windows、mobaxterm、pycharm等终端离开、断线的时候,服务器上的进程仍然会继续运行,待下次我们在终端重新连接上时可以看运行进度。
在深度学习模型训练中,我们经常要在服务器挂上好几个训练模型,一般都要训练几天才有结果,在普通终端模式下,遇到断网等情况,就需要重新加载模型训练了。
screen可以解决我们这个痛点。
2 基本使用方法
2.1 新建:screen -S
新建一个自定义名称的窗口(并进入),例如我的conda有个detec2环境,对应地建立了detec2.1的子窗口,专门用来跑detec2环境相关的项目:
screen -S detec2.1
2.2 查看:screen -ls
查看已有的窗口:
每行是一个screen子窗口
第1列是窗口的完整名称,其中红框部分是pid,进程id,后面的蓝框是窗口名称
第2列是窗口创建时间
第3列,Detached表示离线,没有终端、应用接入这个窗口;Attached相反,表示有终端正在使用该窗口。
2.3 进入:screen -x
-x和-r的区别:
-r只能接入Detached离线状态的screen,要接入Attached状态的,必须加-d参数先将其离线。
而-x是多终端共用一个screen,比如PC1已经接入screenA,PC2用-x也进入screenA,此时PC1和PC2能同时操作、显示screenA,就像我们使用腾讯文档等多人协作编辑的效果。
2.4 退出:Ctrl + a,d
使用快捷键退出,注意这里按法,先按住Ctrl键不要松开,然后敲击a松开后,再敲击d。
这里指的退出,是终端断开连接,让screen离线了,但是screen的程序还会继续运行,相当于挂载在后台。
下次上线可以用screen -x进入看运行进度。
2.5 删除:kill
因为这些screen每个都是一个pid进程,所以使用linux的kill命令可以直接删除,例如:kill 4464。
当然,其实有些窗口是可以常驻着的,比如我留着detec2.1,随时有需要用detectron2框架跑项目的时候,都可以进入这个窗口继续使用,不必每次跑完就马上kill掉。