示例#1
0
        static Util()
        {
            IsServer2008 = RuntimeInformation.OSDescription.Contains("6.1.7");

            if (RuntimeInformation.IsOSPlatform(OSPlatform.Windows) && !IsServer2008)
            {
                CpuUsageSearch = new ManagementObjectSearcher("SELECT *  FROM Win32_PerfFormattedData_PerfOS_Processor WHERE Name='_Total'");
            }

            if (Env.IsRunningOnWindows)
            {
                Memorystatus mStatus = new Memorystatus();
                GlobalMemoryStatus(ref mStatus);
                TotalMemory = Convert.ToInt64(mStatus.DwTotalPhys) / 1024 / 1024;
            }
            else
            {
                var lines   = File.ReadAllLines("/proc/meminfo");
                var infoDic = new Dictionary <string, long>();
                foreach (var line in lines)
                {
                    var datas = line.Split(new[] { ' ' }, StringSplitOptions.RemoveEmptyEntries).Take(2).ToList();
                    infoDic.Add(datas[0], long.Parse(datas[1]));
                }
                TotalMemory = infoDic["MemTotal:"] / 1024;
            }
        }
示例#2
0
        static EnvironmentUtil()
        {
#if NETFRAMEWORK
            IsWindows = true;
#else
            IsWindows = RuntimeInformation.IsOSPlatform(OSPlatform.Windows);
#endif
            var systemVersioin = Environment.OSVersion.Version.ToString();
            IsServer2008 = systemVersioin.StartsWith("6.0") || systemVersioin.StartsWith("6.1");

            if (IsWindows)
            {
                Memorystatus mStatus = new Memorystatus();
                GlobalMemoryStatus(ref mStatus);
                TotalMemory = (int)(Convert.ToInt64(mStatus.DwTotalPhys) / 1024 / 1024);
            }
            else
            {
                var lines   = File.ReadAllLines("/proc/meminfo");
                var infoDic = new Dictionary <string, long>();
                foreach (var line in lines)
                {
                    var datas = line.Split(new[] { ' ' }, StringSplitOptions.RemoveEmptyEntries).Take(2).ToList();
                    infoDic.Add(datas[0], long.Parse(datas[1]));
                }
                TotalMemory = (int)(infoDic["MemTotal:"] / 1024);
            }

            var interf           = NetworkInterface.GetAllNetworkInterfaces().First(i => i.NetworkInterfaceType == NetworkInterfaceType.Ethernet);
            var unicastAddresses = interf.GetIPProperties().UnicastAddresses;
            IpAddress = unicastAddresses.First(a => a.IPv4Mask.ToString() != "255.255.255.255" && a.Address.AddressFamily == AddressFamily.InterNetwork).Address.ToString();

            OSDescription = $"{Environment.OSVersion.Platform} {Environment.OSVersion.Version}";
        }
示例#3
0
 public static long GetFreeMemory()
 {
     if (Env.IsRunningOnWindows)
     {
         Memorystatus mStatus = new Memorystatus();
         GlobalMemoryStatus(ref mStatus);
         return(Convert.ToInt64(mStatus.DwAvailPhys) / 1024 / 1024);
     }
     else
     {
         var lines   = File.ReadAllLines("/proc/meminfo");
         var infoDic = new Dictionary <string, long>();
         foreach (var line in lines)
         {
             var datas = line.Split(new[] { ' ' }, StringSplitOptions.RemoveEmptyEntries).Take(2).ToList();
             infoDic.Add(datas[0], long.Parse(datas[1]));
         }
         var free         = infoDic["MemFree:"];
         var sReclaimable = infoDic["SReclaimable:"];
         return((free + sReclaimable) / 1024);
     }
 }
示例#4
0
		public static extern void GlobalMemoryStatus(ref Memorystatus lpBuffer);
示例#5
0
 private static extern bool GlobalMemoryStatus(ref Memorystatus lpBuffer);