2

我正在为 geektool 编写小型 geeklet,以在我的 Mac 上的非活动和可用 RAM 的总和变慢时提醒我。我对 bash 不是很擅长,所以我的最终输出有问题(变得空白)。这是代码:

inMem=$(top -l 1|awk '/PhysMem/ {print $6}'|sed s/M//) | freeMem=$(top -l 1|awk '/PhysMem/ {print $10}'|sed s/M//) | totalMem=$inMem+$freeMem | bc | echo $totalMem

还想知道我的问题是否是最佳的。非常感谢。

4

3 回答 3

2

我想知道这是否真的可以简化你的命令。我无法测试它,因为我不在 OSX 上,但我希望它可以工作。

read inMem freeMem totalMem < <(top -l 1 | awk '/PhysMem/ { i = $6; sub(/M/, "", i); f = $10; sub(/M/, "", f); printf("%d %d %d\n", i, f, i + f); exit; }')
echo "inMem: $inMem"
echo "freeMem: $freeMem"
echo "totalMem: $totalMem"
于 2013-09-04T13:52:32.857 回答
-1

user000001 的答案是正确的,但问题是“如何将/proc/meminfo输出转换为变量?”

您可以使用这个纯 bash 解决方案进行解析:

read -d '' _  memTotal _ _ memFree _ < <(head -2 /proc/meminfo)
于 2013-09-04T13:43:36.417 回答
-1

而不是解析top,使用/proc/meminfo文件。例如,使用:

$ head -2 /proc/meminfo
MemTotal:        4061696 kB
MemFree:          335064 kB

你可以看到总内存和空闲内存

于 2013-09-04T13:34:35.480 回答