linux OS 中的总物理内存值

value of total physical memory in linux OS

我有一个来自 this question 的问题。 总物理内存的值总是以 KB 为单位显示吗? 因为我想以 GB 为单位打印它,所以我使用了这个命令

grep MemTotal /proc/meminfo | awk '{=/(1024^2); print }'

我不确定是否应该添加 if 语句来证明命令 grep MemTotal /proc/meminfo 显示 KB 值或其他值

如有任何帮助,我们将不胜感激

您不需要使用 grep + awk,您可以在单个 awk 中完成此操作。从解释的角度来看,我已将您尝试的 grep 代码合并到 awk 代码本身。在 awk 程序中,如果第一个字段是 MemTotal: 并且第三个字段是 kB,我正在检查条件,然后以 GB 打印第二个字段的值(取自 OP 的尝试代码本身)。

awk '=="MemTotal:" && =="kB"{print /(1024^2)}' /proc/meminfo

OR 如果你想让 kB 在第 3 个不区分大小写的匹配项中尝试以下操作代码:

awk '=="MemTotal:" && ~/^[kK][bB]$/{print /(1024^2)}' /proc/meminfo

Is the value of the total physical memory always shown in KB?

是的,单位kB在内核代码中是固定的。参见:1 and 2

如果您假设 MemTotal: 条目始终是 /proc/meminfo 的第一行,则可以在不生成子 shell 或外部命令的情况下获取千兆字节值,并且仅使用适用于 ksh、ash、dsh、zsh 或 bash:

的 POSIX-shell 语法
#!/usr/bin/env sh

IFS=': ' read -r _ memTotal _ < /proc/meminfo;

printf 'Total RAM: %d GB\n' "$((memTotal / 1024000))"