#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