0

我编写了一个非常短的程序来收集由 3rd 方应用程序吐出的一些日志文件。它会压缩文件并将它们通过电子邮件发送给我。

我还想收集一些关于机器的信息,尤其是它的图形功能。基本上我想要系统报告、硬件和图形/显示器的两页。格式塔不见了,所以我正在寻找其他解决方案。

我在 SO 上找到了一个解决方案来使用 sysctlbyname 获取机器的模型,但这里的值似乎非常有限。

那么,有没有人有一个简单的方法来获取 GPU 信息?

4

2 回答 2

2

按照上面马克的回答,这里是如何在(Swift)代码中做到这一点。首先,我使用这个解决方案来运行一个 shell 命令:

func shell(launchPath: String, arguments: [String]) -> String
{
    let task = NSTask()
    task.launchPath = launchPath
    task.arguments = arguments

    let pipe = NSPipe()
    task.standardOutput = pipe
    task.launch()

    let data = pipe.fileHandleForReading.readDataToEndOfFile()
    let output: String = NSString(data: data, encoding: NSUTF8StringEncoding)! as String

    return output
}

然后在 system_profiler 中玩了一会儿之后,我发现我对两个键感兴趣,SPHardwareDataType并且SPDisplaysDataType. 这让我想知道 system_profiler 的位置,但which system_profiler解决了这个问题。所以我终于得到了我需要的东西:

let ai = shell("/usr/sbin/system_profiler", arguments: ["SPHardwareDataType", "SPDisplaysDataType"])

结果是一个格式化的字符串,它非常适合使用。

于 2016-05-14T19:48:46.700 回答
1

从终端的命令行中使用 System Profiler,或将其作为 NSTask 执行:

/usr/sbin/system_profiler | awk '/^Graphics/{p=1;print;next} /^[A-Z]/{p=0} p'

输出

Graphics/Displays: 

AMD Radeon R9 M395:

  Chipset Model: AMD Radeon R9 M395
  Type: GPU
  Bus: PCIe
  PCIe Lane Width: x16
  VRAM (Total): 2048 MB
  Vendor: ATI (0x1002)
  Device ID: 0x6920
  Revision ID: 0x0001
  ROM Revision: 113-C905AA-799
  EFI Driver Version: 01.00.799
  Displays:
    iMac:
      Display Type: Retina LCD
      Resolution: 5120 x 2880 Retina
      Retina: Yes
      Pixel Depth: 30-Bit Color (ARGB2101010)
      Main Display: Yes
      Mirror: Off
      Online: Yes
      Built-In: Yes
于 2016-05-13T14:14:33.357 回答