前言
当我们跑任务的时候,往往时间非常久,如果此时出了某些问题,导致shell关闭了连接,那等于之前训练会中断,如果代码中没有保存的功能,则直接训练的都没有用了。使用nohup指令就是为了让工程.py文件在后台运行,而不受shell断开连接的影响
nohup使用
nohup,英文是no hang up的缩写,即不要挂断。
我们通过建立一个小的文件来测试:
vim test.py # 创建文件
import time
x = 0
while x>=0:
print(x)
time.sleep(1)
x+=1
上面文件是每隔一秒,x加一然后print出来,如果不挂断,应该是一直输出的。
来测试一下:
先在一个终端中输入
nohup python -u test.py &
此时会出现一个id,这个id即代表当前的后台运行程序id,可以通过kill进行杀死kill -9 id
。
如果仅仅是将这个终端关掉,是无法关闭这个正在运行的程序/脚本的。
然后换另外一个终端,来到之前的文件位置,使用:
tail -f nohup.out
这里的nohup.out文件,是使用nohup指令自动在当前目录产生的文件,通过上面这个命令,可以重新看到这个程序/脚本运行的样子
那如果忘记了之前的id了呢,该如何杀死进程?
ps ax | grep test.py
通过上面指令,可以输出这个程序/脚本的id,此时再使用kill杀死即可