在服务器上训练深度学习模型的时候,经常需要关闭terminal之后模型继续训练。不然每次都只能电脑一直开着terminal,既费电又不方便。可以通过nohup命令来实现。
nohup命令主要就是用于不挂断地执行程序,就算关闭了当前的session,程序也还会继续执行下去。如果在程序没有执行完毕的情况下,只能通过kill等命令来终止。
shell脚本的代码示例如下:
CUDA_VISIBLE_DEVICES=0 nohup python train.py > 00.log 2>&1
同时执行多个程序的示例如下:
(CUDA_VISIBLE_DEVICES=0 nohup python train.py > 00.log 2>&1) & \
(CUDA_VISIBLE_DEVICES=1 nohup python train.py > 01.log 2>&1) & \
(CUDA_VISIBLE_DEVICES=2 nohup python train.py > 02.log 2>&1) & \
(CUDA_VISIBLE_DEVICES=3 nohup python train.py > 03.log 2>&1)
'\':换行;
'()':子shell执行程序;
'>':将内容输出写入log文件中;
'2>&1':用来将标准错误2重定向到标准输出1中的,&旨在将1解释成标准输出而不是文件名称;
注意:不能用Ctrl+C来终止,那样会直接中断程序执行,实际用时直接关闭session就行了。