How to get the current CPU/RAM/Disk usage in a C# web application using .NET CORE?

前端 未结 3 547
抹茶落季
抹茶落季 2020-12-16 14:46

I am currently looking for a way to get the current CPU/RAM/Disk usage in a C# web application using .NET CORE.

For CPU and ram usage, I use PerformanceCounter Class

3条回答
  •  眼角桃花
    2020-12-16 14:57

    For Windows i'm using this

    var   memorielines= GetWmicOutput("OS get FreePhysicalMemory,TotalVisibleMemorySize /Value").Split("\n");
    
            var freeMemory= memorielines[0].Split("=", StringSplitOptions.RemoveEmptyEntries)[1];
            var totalMemory = memorielines[1].Split("=", StringSplitOptions.RemoveEmptyEntries)[1];
    
    
            var cpuLines = GetWmicOutput("CPU get Name,LoadPercentage /Value").Split("\n");
    
    
            var CpuUse = cpuLines[0].Split("=", StringSplitOptions.RemoveEmptyEntries)[1];
            var CpuName = cpuLines[1].Split("=", StringSplitOptions.RemoveEmptyEntries)[1];
    
    
    
        private string GetWmicOutput(string query, bool redirectStandardOutput = true)
        {
            var info = new ProcessStartInfo("wmic");
            info.Arguments = query;
            info.RedirectStandardOutput = redirectStandardOutput;
            var output = "";
            using (var process = Process.Start(info))
            {
                output = process.StandardOutput.ReadToEnd();
            }
            return output.Trim();
        }
    

    For the disk infos you can use this query :

    LOGICALDISK get Caption,DeviceID,FileSystem,FreeSpace,Size /Value
    

    if you want a better output formatting give a look to this article : https://www.petri.com/command-line-wmi-part-3

提交回复
热议问题