进程守护screen
笔者在最近训练模型时,使用wandb进行搜参,但由于运行时间较长,而且使用ssh远程连接服务器,显然不可能实时连接服务器进行训练。而且因为学校断网等原因,加上ssh连接的时候可能会存在网络抖动,此时训练时的bash就会出现中断,导致模型训练终止。
为了解决这个问题,显然需要一个可以实时在后台运行的进程用来进行训练,从而避免中断重训等问题,即进车守护。这个时候,screen显然是一个很好的工具。下面就讲解一下具体安装流程和使用方法。
安装流程
Linux下安装方法很简单,就一条命令:
1 | sudo apt install screen # 适用Ubuntu,其它系统把apt换成对应的包管理器就行了 |
使用方法
启动一个新会话
仅启动新会话,使用以下命令:
1
screen
需要为新会话进行命名,如newScreen,则使用:
1
screen -S newScreen # -S后写想命名的名字
列出当前所有会话
1 | screen -ls |
会出现类似如下内容的输出:
1 | (base) ~$ screen -ls |
重新连接到一个已经分离的Screen会话
1 | screen -r session_name |
分离当前会话
在screen会话中,你可以按下Ctrl+A
后再按下d
键,以将当前会话分离回后台。会话仍在后台运行。
关闭会话
1 | screen -S session_name -X quit |
其它有用指令
日志记录:可以通过Ctrl+A H
启动和停止当前窗口的日志记录,日志文件会被保存在当前目录中。
屏幕分割:可以通过Ctrl+A S
分割当前窗口,然后使用Ctrl+A TAB
在各个区域间切换,使用Ctrl+A X
关闭当前区域。
拷贝模式:使用Ctrl+A [
进入拷贝模式,这允许你滚动并查看窗口的输出历史。
指令区别
screen -d **
:连接一个screen进程,如果该进程是attached,就先踢掉远端用户再连接。
screen -D **
:连接一个screen进程,如果该进程是attached,就先踢掉远端用户并让他logout再连接。
screen -r **
:恢复离线的screen进程,如果有多个断开的进程,需要指定完整name。
screen -R **
: 先试图恢复离线的作业。若找不到离线的进程,即建立新的screen进程。
其它指令
将所有会话调整为当前终端的大小
1 | screen -A session_name |
将指定的Screen进程离线
1 | screen -d session_name |
指定会话的缓冲区行数
1 | screen -h session_name |
即使已经有Screen作业在运行,仍强制建立新的Screen作业
1 | screen -m session_name |
先尝试恢复离线的作业,如果找不到则建立新的Screen作业
1 | screen -R session_name |
指定建立新会话时要执行的shell
1 | screen -s session_name |
显示版本信息
1 | screen -v session_name |
检查并删除无法使用的Screen作业
1 | screen -wipe session_name |
本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来源 EpsilonZ's Blog!