深度学习训练场景常常使用服务器集群实现,终端连接远程服务器长时间训练任务时由于网络波动等原因会断开连接,此时训练任务被中断,且前台打印信息丢失,原因是终端接收HUP信号关闭子进程,解决方法:
1. nohup命令让终端忽略HUP信号:
nohup python3 -u train.py 再加&可转入后台,此时生成.out文件打印训练信息。
2. setsid命令以该命令运行的进程父进程不属于该终端:
setsid python3 -u train.py > info.txt打印信息存放在info.txt中。
训练过程需要中断时需要关闭后台进程实现:
1. ps -aux查看所有进程
2. 找到对应任务PID
3. kill -15 PID 或 kill -9 PID关闭进程,一般用-15,通俗来说:让程序“安全干净退出”,即执行资源释放等准备工作。 -9为强制终止。