如何使用bash脚本检查nvidia gpu是否可用?
我想这样做如何使用bash脚本检查nvidia gpu是否可用?,bash,nvidia,Bash,Nvidia,我想这样做 如果nvidia gpu可用;然后 做点什么 其他的 做点别的 fi 如何使用bash脚本实现这一点?这取决于您的系统和安装的工具。如果,e。g、 ,您可以使用lshw,这可能就足够了: if[[$(lshw-C显示| grep供应商)=~Nvidia];然后 做点什么 其他的 做点别的 fi 说明: lshw列出了您的硬件设备 -C display将其限制为仅显示特征项 grep vendor过滤掉包含供应商规范的行 =~Nvidia检查该行是否与表达式“Nvidia”匹配
如果nvidia gpu可用;然后
做点什么
其他的
做点别的
fi
如何使用bash脚本实现这一点?这取决于您的系统和安装的工具。如果,e。g、 ,您可以使用
lshw
,这可能就足够了:
if[[$(lshw-C显示| grep供应商)=~Nvidia];然后
做点什么
其他的
做点别的
fi
说明:
列出了您的硬件设备lshw
将其限制为仅显示特征项-C display
过滤掉包含供应商规范的行grep vendor
检查该行是否与表达式“Nvidia”匹配=~Nvidia
lshw
,则可以使用lspci
或从/proc
文件系统读取值来实现类似的功能
这是可能的,这是工作,您需要有工作的Nvidia驱动程序安装的图形卡。但我认为,没有它们,您的用例就没有意义了。:) 这取决于您的系统和安装的工具。如果,e。g、 ,您可以使用
lshw
,这可能就足够了:
if[[$(lshw-C显示| grep供应商)=~Nvidia];然后
做点什么
其他的
做点别的
fi
说明:
列出了您的硬件设备lshw
将其限制为仅显示特征项-C display
过滤掉包含供应商规范的行grep vendor
检查该行是否与表达式“Nvidia”匹配=~Nvidia
lshw
,则可以使用lspci
或从/proc
文件系统读取值来实现类似的功能
这是可能的,这是工作,您需要有工作的Nvidia驱动程序安装的图形卡。但我认为,没有它们,您的用例就没有意义了。:) 当它加载
modprobe
或insmod
时,您可以执行以下操作
(lsmod | grep -q nameofyourdriver) && echo 'already there' || echo 'load it'
当它加载了
modprobe
或insmod
时,您可以执行以下操作
(lsmod | grep -q nameofyourdriver) && echo 'already there' || echo 'load it'
如果
lspci
可用/可接受
#!/usr/bin/env bash
# Some distro requires that the absolute path is given when invoking lspci
# e.g. /sbin/lspci if the user is not root.
gpu=$(lspci | grep -i '.* vga .* nvidia .*')
shopt -s nocasematch
if [[ $gpu == *' nvidia '* ]]; then
printf 'Nvidia GPU is present: %s\n' "$gpu"
echo do_this
else
printf 'Nvidia GPU is not present: %s\n' "$gpu"
echo do_that
fi
当处理Optimus之类的双GPU时,事情变得更加复杂
lspci | grep -i vga
输出
01:00.0 VGA compatible controller: NVIDIA Corporation GP107M [GeForce GTX 1050 3 GB Max-Q] (rev a1)
05:00.0 VGA compatible controller: Advanced Micro Devices, Inc. [AMD/ATI] Picasso (rev c2)
2
解决方法之一是计算有多少GPU可用
lspci | grep -ci vga
输出
01:00.0 VGA compatible controller: NVIDIA Corporation GP107M [GeForce GTX 1050 3 GB Max-Q] (rev a1)
05:00.0 VGA compatible controller: Advanced Micro Devices, Inc. [AMD/ATI] Picasso (rev c2)
2
如果有多个VGA输出,只需添加另一个测试
total=$(lspci | grep -ci vga)
if ((total > 1)); then
echo "$total"
echo do_this
fi
我正在使用GNU
grep
所以,不确定该标志是否适用于非GNU grep。如果lspci
可用/可接受
#!/usr/bin/env bash
# Some distro requires that the absolute path is given when invoking lspci
# e.g. /sbin/lspci if the user is not root.
gpu=$(lspci | grep -i '.* vga .* nvidia .*')
shopt -s nocasematch
if [[ $gpu == *' nvidia '* ]]; then
printf 'Nvidia GPU is present: %s\n' "$gpu"
echo do_this
else
printf 'Nvidia GPU is not present: %s\n' "$gpu"
echo do_that
fi
当处理Optimus之类的双GPU时,事情变得更加复杂
lspci | grep -i vga
输出
01:00.0 VGA compatible controller: NVIDIA Corporation GP107M [GeForce GTX 1050 3 GB Max-Q] (rev a1)
05:00.0 VGA compatible controller: Advanced Micro Devices, Inc. [AMD/ATI] Picasso (rev c2)
2
解决方法之一是计算有多少GPU可用
lspci | grep -ci vga
输出
01:00.0 VGA compatible controller: NVIDIA Corporation GP107M [GeForce GTX 1050 3 GB Max-Q] (rev a1)
05:00.0 VGA compatible controller: Advanced Micro Devices, Inc. [AMD/ATI] Picasso (rev c2)
2
如果有多个VGA输出,只需添加另一个测试
total=$(lspci | grep -ci vga)
if ((total > 1)); then
echo "$total"
echo do_this
fi
我正在使用GNU
grep
所以,不确定该标志是否适用于非GNU grep。这是否回答了您的问题@iBug,实际的问题是我应该使用什么命令来验证gpu是否可用?。例如:nvidia smi或nvcc,但如果您是否插入了gpu,这些命令将始终可用,因此我们无法使用。nvidia-smi报告所需信息这是否回答了您的问题@iBug,实际的问题是我应该使用什么命令来验证gpu是否可用?。例如:nvidia smi或nvcc,但如果您是否插入了gpu,这些命令将始终可用,因此我们无法使用。nvidia-smi报告所需信息