文章目录
- 后台执行nohup
- 1.最简单的nohup方式
- 2.指定log输出路径和文件的nohup方式
- 3.指定log输出路径和文件并记录程序的PID
- 4.运行bash脚本
- nohup日志实时监控并打印输出
由于这周在服务器端训练大型的模型,一般都需要几天的时间,结果,这周连续断了两次电,服务器是没断电,但是主机没电关机了,导致意外训练中止。我一个程序跑了3天,还差一天的时候中断了;另一个是跑了一天多,还剩1/3的时候又中断了。。。所以泪目找nohup,防止网络中断导致训练停止。
后台执行nohup
1.最简单的nohup方式
使用nohup
命令,最后加上&
即可:
-
Ctrl + C
不会中断程序的执行; - nohup会将所有的输出默认写入在当前路径的
nohup.out
文件中。
如下所示:
如果你的程序有后缀参数,可以这样优雅的写:
2.指定log输出路径和文件的nohup方式
- nohup会将所有的输出默认写入在你指定的的
log_file
文件中,我这里的就是train.log
。
带参数优雅版:
3.指定log输出路径和文件并记录程序的PID
- nohup会将所有的输出默认写入在你指定的的
log_file
文件中,我这里的就是train.log
; - 同时会将当前python的PID记录在
run.pid
中,方便你中止程序(一般训练中都用会使用多进程,所以实际上会有多个程序,但是nohup只会记录当前启动的那个程序的PID,不过不影响,因为你只要杀掉1个子进程,所有进程都会中止)。
4.运行bash脚本
nohup日志实时监控并打印输出
实时监控nohup输出log的内容:
参考文章:
- linux 使用nohup的时候输出日志的同时也输出该程序的pid
- Linux后台运行命令nohup实现屏幕输出记录到日志文件