【问题标题】:How to get system specs in .net core on linux如何在 Linux 上的 .net 核心中获取系统规格
【发布时间】:2019-08-26 15:08:46
【问题描述】:

我尝试在 linux 上获取系统信息。我当前的实现适用于 windows,但不完全适用于 linux。在我的情况下,我使用 .NET CORE 2.2 的最小版 debian 9.8。 有关以下方面的重要信息:处理器、硬盘、内存。 非常令人毛骨悚然的东西,在 linux debian 9 上它告诉我 OSPlatform 是 Windows。我希望有人能给我一些想法。

我已经为使用 kernel32.dll 的 windows 编写了一个小库。 kernel32.dll 我们不能在 linux 上使用,所以我需要另一种实现方式让 linux 接收信息(处理器、硬盘、内存)。

【问题讨论】:

    标签: c# linux .net-core debian


    【解决方案1】:

    我相信this issue 已经在 .Net 核心 GitHub 存储库中打开。 因此,我相信没有 .Net 核心 API 可以帮助您实现这一目标。

    我能想到一种解决方法。 您可以选择从 C# 代码运行 bash 命令,如下所示 (reference):

    public static class ShellHelper
    {
        public static string Bash(this string cmd)
        {
            var escapedArgs = cmd.Replace("\"", "\\\"");
    
            var process = new Process()
            {
                StartInfo = new ProcessStartInfo
                {
                    FileName = "/bin/bash",
                    Arguments = $"-c \"{escapedArgs}\"",
                    RedirectStandardOutput = true,
                    UseShellExecute = false,
                    CreateNoWindow = true,
                }
            };
            process.Start();
            string result = process.StandardOutput.ReadToEnd();
            process.WaitForExit();
            return result;
        }
    }
    

    然后您可以运行 bash 命令以获取 HTML 格式的输出 (reference):

    var output = "sudo lshw -html > hardwareinfo.html".Bash();
    

    lshw 将在指定路径创建一个 HTML 文件。您可以选择以某种方式解析该信息以获取信息。

    希望这对你有用。

    【讨论】:

    • 为了内存使用,我用free -m做了一个自己的小包装。你的方法效果很好。谢谢@Manoj Choudhari
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2013-01-23
    • 1970-01-01
    • 2018-12-21
    • 1970-01-01
    • 1970-01-01
    • 2012-01-24
    • 1970-01-01
    相关资源
    最近更新 更多