前几天在服务器上跑代码,碰见了一个新手级问题,却不好发现 具体而言就是服务器显卡报:

out of memory

这时候运行nvidia-smi查看显卡状态,发现显卡基本没有占用 进入python中

import torch
torch.rand(3).to.('cuda:0')

测试显卡,依然报out of memory 但这时

ps -aux | grep python

后发现后台挂着好几个进程 应该是这几个进程预定了显存却没有使用,造成out of memory却nvidia-smi发现显卡空闲 造成该问题的原因是很简单的错误 正确的后台挂起如下:

nohup python train.py >out1.txt 2>&1 &
nohup run.sh &

若是缺失了最后一个&,然后再关闭ssh链接,造成nohup意外中断就会造成上述现象

 

nohup 英文全称 no hang up(不挂起),用于在系统后台不挂断地运行命令,退出终端不会影响程序的运行。

nohup 命令,在默认情况下(非重定向时),会输出一个名叫 nohup.out 的文件到当前目录下,如果当前目录的 nohup.out 文件不可写,输出重定向到$HOME/nohup.out 文件中。

语法格式:

nohup Command [ Arg … ] [ & ]

参数说明:

Command:要执行的命令。

Arg:一些参数,可以指定输出文件。

&:让命令在后台执行,终端退出后命令仍旧执行。