在 OS X 下获取基本机器信息
Getting basic machine info under OS X
我编写了一个非常短的程序来收集第三方应用程序吐出的一些日志文件。它会将文件压缩并通过电子邮件发送给我。
我还想收集一些关于机器的信息,尤其是它的图形功能。基本上我想要系统报告、硬件和 Graphics/Displays 中的两页。 Gestalt 没了,所以我正在寻找其他解决方案。
我在 SO 上找到了使用 sysctlbyname 获取机器型号的解决方案,但似乎这里的值非常有限。
那么,有谁有简单的获取GPU信息的方法吗?
在终端的命令行中使用 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
根据上面 Mark 的回答,以下是在 (Swift) 代码中的操作方法。首先,我使用 this solution 到 运行 一个 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"])
结果是一个格式化的字符串,非常好用。
我编写了一个非常短的程序来收集第三方应用程序吐出的一些日志文件。它会将文件压缩并通过电子邮件发送给我。
我还想收集一些关于机器的信息,尤其是它的图形功能。基本上我想要系统报告、硬件和 Graphics/Displays 中的两页。 Gestalt 没了,所以我正在寻找其他解决方案。
我在 SO 上找到了使用 sysctlbyname 获取机器型号的解决方案,但似乎这里的值非常有限。
那么,有谁有简单的获取GPU信息的方法吗?
在终端的命令行中使用 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
根据上面 Mark 的回答,以下是在 (Swift) 代码中的操作方法。首先,我使用 this solution 到 运行 一个 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"])
结果是一个格式化的字符串,非常好用。