Как получить системные спецификации в .net Core в Linux

#c# #linux #.net-core #debian

#c# #linux #.net-core #debian

Вопрос:

Я пытаюсь получить системную информацию в Linux. Моя текущая реализация работает для Windows, но не полностью для Linux. В моем случае я использую debian 9.8 minimal с .NET CORE 2.2. Важная информация о: процессоре, жестких дисках, памяти. Что-то, что было очень жутким, что в linux debian 9 это говорит мне, что OSPlatform — это Windows. Я надеюсь, что кто-нибудь может дать мне несколько идей.

Я написал небольшую библиотеку для Windows, которая использует kernel32.dll . The kernel32.dll мы не можем использовать в Linux, поэтому мне нужен другой способ реализации для Linux, чтобы получать информацию (процессор, жесткие диски, память).

Ответ №1:

Я полагаю, что эта проблема уже открыта.Репозиторий Net core на GitHub. Следовательно, я считаю, что нет.Net core API, который может помочь вам достичь этого.

Есть один обходной путь, о котором я могу подумать. У вас есть возможность запускать команды bash из кода C #, как показано ниже (ссылка):

 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 resu<
    }
}
  

Затем вы можете запустить команду bash, чтобы получить выходные данные в формате HTML (ссылка):

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

lshw создал бы HTML-файл по указанному пути. У вас есть возможность каким-то образом проанализировать эту информацию, чтобы получить информацию.

Надеюсь, это сработает для вас.

Комментарии:

1. Для использования памяти я создал небольшую собственную оболочку с помощью free -m. Ваши методы отлично работают. Спасибо @Manoj Choudhari