记录错误:ubuntu错误使用ctrl+z和kill退出程序导致僵尸程序
最近使用服务器在跑Python程序,将神经网络和数据读入显卡0和1中进行训练,错误将ctrl+z当作中断程序的命令,同时还使用kill将显卡中的进程杀死,导致之后无法重新训练,同时无法使用nvidia-smi。输入有关显卡的命令(nvidia-smi,torch.cuda.is_available())均直接卡住,只能关闭终端。
ctrl+z只是将程序挂起,放入后台,但是并不是真正中断程序,中断程序请用ctrl+c。
后来经过一番搜索,错误根源还是在于使用kill将显卡中的进程中断。显卡中的进程虽然已经中断,但是整个python程序没有中断。
使用ps -u [username] 查看自己用户下的进程,发现python程序依旧存在并且已经成为僵尸程序如下图:
既然找到,那么可以使用kill -9 PID继续杀死,结果并不可行,可用ps aux | grep 'Z’来查找僵尸程序
一般来说需要中断该程序的父程序才能中断该程序,使用pstree -p -s [PID]来查找该程序的父程序,如下图:
最后发现该程序的父程序是systemd,这是守护进程,无法中断。
目前唯一的办法是重启服务器或者等着内核将僵尸程序回收。