From 87e30b9edf3eaacbb83b66c34a0efe35055dbbe2 Mon Sep 17 00:00:00 2001 From: Bi8bo <2738644273@qq.com> Date: Wed, 18 Sep 2024 09:51:02 +0800 Subject: [PATCH] =?UTF-8?q?=E4=BF=AE=E5=A4=8D=E5=9C=A8docker=20=E5=AE=B9?= =?UTF-8?q?=E5=99=A8=E5=86=85=E6=97=A0=E6=B3=95=E8=8E=B7=E5=8F=96=E5=86=85?= =?UTF-8?q?=E5=AD=98=E7=9B=B8=E5=85=B3=E4=BF=A1=E6=81=AF=E7=9A=84=E9=97=AE?= =?UTF-8?q?=E9=A2=98?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../Helper/ComputerHelper.cs | 27 +++++++++++-------- 1 file changed, 16 insertions(+), 11 deletions(-) diff --git a/Yi.Abp.Net8/framework/Yi.Framework.Core/Helper/ComputerHelper.cs b/Yi.Abp.Net8/framework/Yi.Framework.Core/Helper/ComputerHelper.cs index d55c817c..065758ed 100644 --- a/Yi.Abp.Net8/framework/Yi.Framework.Core/Helper/ComputerHelper.cs +++ b/Yi.Abp.Net8/framework/Yi.Framework.Core/Helper/ComputerHelper.cs @@ -377,20 +377,25 @@ namespace Yi.Framework.Core.Helper /// public MemoryMetrics GetUnixMetrics() { - string output = ShellHelper.Bash("free -m | awk '{print $2,$3,$4,$5,$6}'"); + string output = ShellHelper.Bash(@" +# 从 /proc/meminfo 文件中提取总内存 + total_mem=$(cat /proc/meminfo | grep -i ""MemTotal"" | awk '{print $2}') + # 从 /proc/meminfo 文件中提取剩余内存 +free_mem=$(cat /proc/meminfo | grep -i ""MemFree"" | awk '{print $2}') +# 显示提取的信息 +echo $total_mem $used_mem $free_mem + "); var metrics = new MemoryMetrics(); - var lines = output.Split('\n', (char)StringSplitOptions.RemoveEmptyEntries); - - if (lines.Length <= 0) return metrics; - - if (lines != null && lines.Length > 0) + + if (!string.IsNullOrWhiteSpace(output)) { - var memory = lines[1].Split(' ', (char)StringSplitOptions.RemoveEmptyEntries); - if (memory.Length >= 3) + var memory = output.Split(' ', (char)StringSplitOptions.RemoveEmptyEntries); + if (memory.Length >= 2) { - metrics.Total = double.Parse(memory[0]); - metrics.Used = double.Parse(memory[1]); - metrics.Free = double.Parse(memory[2]);//m + metrics.Total = Math.Round(double.Parse(memory[0]) / 1024, 0); + + metrics.Free = Math.Round(double.Parse(memory[1])/ 1024, 0);//m + metrics.Used = metrics.Total - metrics.Free; } } return metrics;