目录
当需要确保SSH连接断开后仍能持续进行神经网络训练时,连接中断或本地操作(如断网、关闭电脑、终端或IDE)会导致远程服务器上的程序中止,这对于需要长时间运行的程序来说是一个不可接受的问题。为了解决这个问题,你可以采取以下方法来确保服务器上的程序在连接断开时仍然继续执行:
方法一、screen
1.创建screen
screen -S [窗口名称]
新建窗口后可以在窗口里运行代码,即便断开连接也可以继续运行。
如果没有screen则需要安装,以下是安装命令
sudo apt install screen
2.查看screen列表
如果忘了输入的窗口名是什么,输入以下命令可以查看存在的窗口有哪些。
screen -ls
3.进入screen窗口
输入以下命令可以重新进入运行窗口。
screen -r [窗口名称]
4.断开screen连接
但只能有一台机器进入窗口,如果有一台机器正查看screen窗口内容,其他机器将进入失败。必须将连接断开才能进入。
screen -d [窗口名称]
5.删除screen
screen -S [窗口名称] -X quit
方法二、nohup命令
方法一中的screen命令并不是每个服务器都能使用的,如果你使用的服务器没有安装screen,而你又没有权限安装,那么可以使用nohup命令。
1.运行代码
首先进入到运行代码的目录中(python代码为例)
nohup python -u [python文件名] &
例如:
nohup python -u train.py &
一定要加上-u,不然在输出文件中看不到python的运行输出
2.查看运行状态
步骤1执行之后代码就已经运行了,这时候就可以关上电脑走人了。如果想查看模型训练到哪里了则:
首先要重新进入到代码存放目录,输入以下命令(默认的输出文件是nohup.out)
tail -f nohup.out
这样就能实时查看代码的运行状态了。