所以我知道如何找到视频卡的数量,但在我写的ruby脚本中,我有一个小小的方法来确定它:
def getNumCards
_numGpu = %x{lspci | grep VGA}.split("\n").size
end
但已经确定我需要搜索3D以及VGA,所以我将其更改为:
def getNumCards
_numGpu = %x{lspci | grep "VGA\|3D"}.split("\n").size
end
但是当我运行第二个时,我发现它返回0。如果我在命令行上独立运行该命令,它会显示3个视频卡(1个板载VGA和2个特斯拉NVIDIA卡作为3D卡)。我不确定分裂部分发生了什么,可能会弄乱一些东西。
任何帮助都会很棒!
干杯
答案 0 :(得分:3)
man grep:
-E, --extended-regexp
...
egrep is the same as grep -E.
所以,egrep
应该有帮助
答案 1 :(得分:0)
我会从两种方式中获取此信息之一。
几乎纯粹的命令行版本是:
def getNumCards
`lspci | grep -P '\b(?:VGA|3D)\b' | wc -l`.to_i
end
让操作系统几乎完成所有工作,但最终转换为整数。
-P '\b(?:VGA|3D)\b'
是一个Perl正则表达式,它说“找到一个断字,然后寻找VGA或3D,然后是另一个断字”。这将有助于避免由于目标嵌入其他字符串而导致的任何命中。
更多Ruby版本将是:
def getNumCards
`lspci`.split("\n").grep(/\b(?:VGA|3D)\b/).count
end
它做同样的事情,只在Ruby中完成。