我运行 lscpu 来获取 CPU 数量
lscpu | grep -i "Model name:" | cut -d':' -f2- -
结果:CPU:2 NUMA node0 CPU:0,1
如何只获取 CPU 数量并丢弃收集到的所有其他信息?我只需要获取 CPU 数量,无需其他信息。
谢谢你学习Linux
答案1
您可以获取核心数:
lscpu | egrep "^CPU\(s\):" | sed -e "s/[^0-9]//g"
...CPU 数量:
lscpu | egrep "^Socket\(s\):" | sed -e "s/[^0-9]//g"
...并列出 CPU 编号:
lscpu -p=cpu
看man lscpu
。
一些解释:
egrep
使用正则表达式提取一行。carret 符号匹配行首,反斜杠用于转义括号符号,表示行应以给定的文本开头,括号按原样使用,没有其他含义。
sed
仅提取行的数字字符使用:
s
...作为替换命令,
[^0-9]
...匹配所有非数字字符并在每次出现时将其替换为空(通过使用g
)。斜杠用于分隔四个部分:替换/要替换的内容/替换的内容/全局
至少有百万种方法可以实现您的要求。给出的方法可能不是最好的,但您可以得到一个想法。