Shell脚本:在POSIX系统上以可编程方式获取CPU供应商的可移植方式

问题描述 投票:1回答:1

是否有一种可移植的方法来以外壳程序脚本的方式可编程地获取POSIX系统上的CPU供应商信息?特别是,我需要告诉x86_64 / AMD64 CPU是否由Intel或AMD出售。该方法不必在所有POSIX系统上都有效,但应在相当范围的常见POSIX系统上工作:GNU / Linux,MacOS和* BSD。例如,仅Linux的方法是从/proc/cpuinfo中提取信息。

bash shell posix cpu-architecture
1个回答
0
投票

这是您需要的基本逻辑:

  1. 检测OS类型:linux或BSD(如果BSD darwin或其他bsd。如果是其他BSD,则openbsd,freebsd,netbsd,蜻蜓bsd。如果是darwin,则需要darwin特定的处理。这将确定您使用哪种方法进行部分(但不是全部)检测。

  2. 如果是Linux,那么只要您想要的只是intel或amd,就很容易,除非您需要可靠的32/64位检测,否则只指定了64位,这是正在运行的内核还是cpu?因此,如果有必要就必须进行处理。

  3. BSD的sysctl将给出每个BSD决定放入的内容。蜻蜓和freebsd会相似或相同,您必须检查openbsd才能发布,netbsd ...有点棘手。某些安装将需要r​​oot才能读取sysctl,这是您无法控制的,因此您必须视情况进行处理,并且需要进行错误处理以检测所需的root,这有所不同,通常是使它成为用户可读的数据,但并非总是如此。请注意,bsds可以并且确实会更改输出中某些字段数据的语法,因此,如果您确实需要bsd支持,则必须继续进行下去。通常,Apple似乎根本不关心真正的unix工具是否能够使用其数据,因此这是经验性的,不要假设没有看到几代输出。而且默认情况下,它们不包含许多标准的Unix工具,因此您不能假定一开始就已真正安装了这些工具。

  4. / proc / cpuinfo将涵盖适用于amd / intel的所有linux系统,并且可以使用多种方法来查明它是运行32位还是64位,以及它是32位还是64位cpu。

    ] >
  5. 就像评论说的那样,阅读inxi中的cpu块以选择所需的内容,但这并不容易,并且需要大量的数据示例,并且您会感到沮丧,因为有一天FreeBSD或osx或openbsd会随机更改某些内容以发布新版本。

© www.soinside.com 2019 - 2024. All rights reserved.