.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負載資訊,有助於監控和分析系統性能。