.NET CORE 獲取LINUX硬體CPU使用率等狀態資訊
cat /proc/stat
三個命令都可以檢視CPU記憶體或者程序等情況
然後看下面的程式碼
using System;
using System.Diagnostics;
using System.Runtime.InteropServices;
namespace myApp
{
class Program
{
static void Main(string[] args)
{
Process[] p = Process.GetProcesses();//獲取程序資訊
Int64 totalMem = 0;
string info = "";
foreach (Process pr in p)
{
totalMem += pr.WorkingSet64 / 1024;
info += pr.ProcessName + "記憶體:-----------" + (pr.WorkingSet64 / 1024).ToString() + "KB\r\n";//得到程序記憶體
}
Console.WriteLine(info);
Console.WriteLine("總記憶體totalmem:" + totalMem/1024+"M");
Console.WriteLine("判斷是否為Windows Linux OSX");
Console.WriteLine($"Linux:{RuntimeInformation.IsOSPlatform(OSPlatform.Linux)}");
Console.WriteLine($"OSX:{RuntimeInformation.IsOSPlatform(OSPlatform.OSX)}");
Console.WriteLine($"Windows:{RuntimeInformation.IsOSPlatform(OSPlatform.Windows)}");
Console.WriteLine($"系統架構:{RuntimeInformation.OSArchitecture}");
Console.WriteLine($"系統名稱:{RuntimeInformation.OSDescription}");
Console.WriteLine($"程序架構:{RuntimeInformation.ProcessArchitecture}");
Console.WriteLine($"是否64位作業系統:{Environment.Is64BitOperatingSystem}");
Console.WriteLine("CPU CORE:"+Environment.ProcessorCount);
Console.WriteLine("HostName:" + Environment.MachineName);
Console.WriteLine("Version:" + Environment.OSVersion);
Console.WriteLine("記憶體相關的:" + Environment.WorkingSet);
string[] LogicalDrives = Environment.GetLogicalDrives();
for (int i = 0; i < LogicalDrives.Length; i++)
{
Console.WriteLine("驅動:" + LogicalDrives[i]);
}
// Console.ReadLine();
//建立一個ProcessStartInfo物件 使用系統shell 指定命令和引數 設定標準輸出
var psi = new ProcessStartInfo("top", " -b -n 1") { RedirectStandardOutput = true };
//啟動
var proc = Process.Start(psi);
// psi = new ProcessStartInfo("", "1") { RedirectStandardOutput = true };
//啟動
// proc = Process.Start(psi);
if (proc == null)
{
Console.WriteLine("Can not exec.");
}
else
{
Console.WriteLine("-------------Start read standard output-------cagy-------");
//開始讀取
using (var sr = proc.StandardOutput)
{
while (!sr.EndOfStream)
{
Console.WriteLine(sr.ReadLine());
}
if (!proc.HasExited)
{
proc.Kill();
}
}
Console.WriteLine("---------------Read end-----------cagy-------");
Console.WriteLine($"Total execute time :{(proc.ExitTime - proc.StartTime).TotalMilliseconds} ms");
Console.WriteLine($"Exited Code : {proc.ExitCode}");
}
}
}
}