Buy Me a Coffee

.NET 讀取Linux CPU平均使用時間

在Linux系統中,可以通過讀取 /proc/loadavg 文件來獲得CPU的平均負載。這個檔案提供了過去1分鐘、5分鐘和15分鐘的平均負載數據。以下是在.NET環境中如何讀取這些數據的範例。

LinuxSystemInfo.cs - CPU負載數據讀取

這個類別包含一個靜態方法,用於讀取並解析 /proc/loadavg 文件中的數據。

using System;
using System.IO;
using System.Globalization;

public static class LinuxSystemInfo
{
    public static (double OneMinuteLoad, double FiveMinuteLoad, double FifteenMinuteLoad) GetCpuLoadAverage()
    {
        if (Environment.OSVersion.Platform != PlatformID.Unix)
        {
            throw new NotSupportedException("此方法僅支援Linux系統。");
        }

        string loadavgData = File.ReadAllText("/proc/loadavg");
        string[] parts = loadavgData.Split(' ');

        double oneMinuteLoad = double.Parse(parts[0], CultureInfo.InvariantCulture);
        double fiveMinuteLoad = double.Parse(parts[1], CultureInfo.InvariantCulture);
        double fifteenMinuteLoad = double.Parse(parts[2], CultureInfo.InvariantCulture);

        return (oneMinuteLoad, fiveMinuteLoad, fifteenMinuteLoad);
    }
}

Program.cs - 主程式

這是一個簡單的主程式,它調用 LinuxSystemInfo 類別以獲得CPU負載數據並將其打印到控制台。

using System;

class Program
{
    static void Main()
    {
        if (Environment.OSVersion.Platform == PlatformID.Unix)
        {
            var (oneMinuteLoad, fiveMinuteLoad, fifteenMinuteLoad) = LinuxSystemInfo.GetCpuLoadAverage();
            Console.WriteLine($"1分鐘平均負載: {oneMinuteLoad}");
            Console.WriteLine($"5分鐘平均負載: {fiveMinuteLoad}");
            Console.WriteLine($"15分鐘平均負載: {fifteenMinuteLoad}");
        }
        else
        {
            Console.WriteLine("本程式僅支援Linux系統。");
        }
    }
}

注意事項

  • 此程式僅在Linux環境下運作。
  • 讀取 /proc/loadavg 文件不需要特別權限,但執行.NET應用程式的用戶需要有相應的讀取權限。

通過這種方式,.NET應用程式可以輕鬆地獲得Linux系統的CPU負載資訊,有助於監控和分析系統性能。