我正在开发一个 .NET 5 控制台应用程序,希望能够读取一些基本系统信息,例如 CPU 温度、内存使用情况、CPU 使用情况等。我的开发计算机正在运行 Windows,但该应用程序部署到 Linux机,因此我想避免为两个操作系统编写两组不同的代码。
如何以跨平台方式执行此操作?有很多 Windows API 和调用可以做到这一点,但我也需要 Linux 才能工作。
有一个 github 问题正在开放,以将其标准化为 .net 运行时的一部分。也许我们会在 .net 6 或 7 中看到这个,谁知道呢... https://github.com/dotnet/runtime/issues/22948
这是更好的库之一:https://github.com/openhardwaremonitor/openhardwaremonitor。他们似乎尝试了一些 Linux 支持。
对于 CPU 使用率之类的事情,您可能会成功使用 如何在 C# 中获取 CPU 使用率? (Windows)。
对于Linux上的CPU,命令行解析结果:https://phoenixnap.com/kb/check-cpu-usage-load-linux。简而言之:
sudo apt install sysstat
mpstat 1
GC 类具有获取 C# 运行时使用的内存的方法。对于系统内存,这里有一些资源:
Windows:如何获取计算机的 RAM 总量?
Linux:运行
free -m
并使用 Process
类解析结果。
其他可能对 Linux 有帮助的链接:
快进到 2024 年底,我们现在有了一个名为 Hardware.Info 的 NuGet 包:
https://github.com/Jinjinov/Hardware.Info
我没有参与这个项目,只是分享给未来的搜索者。
我在 .NET 8 中使用它。