如何在Bash中获取总物理内存以将其分配给变量?

Neu*_*ino 42 bash

如何获取Linux PC的总物理内存(以字节为单位)?

我需要将它分配给bash脚本变量.

Neu*_*ino 61

grep MemTotal /proc/meminfo | awk '{print $2}'  
Run Code Online (Sandbox Code Playgroud)

返回的数字以KB为单位

  • 看来你已经回答了自己的问题.尽管如此,使用一个awk命令来完成这项工作.`awk'/ MemTotal/{print $ 2}'/ proc/meminfo` (8认同)
  • 要包含转换到不同的基础(例如GB),您可以使用`grep MemTotal/proc/meminfo | awk'{print $ 2}'| xargs -I {} echo"scale = 4; {}/1024 ^ 2"| bc` (8认同)
  • @turtlemonvh或者你可以执行 `awk '/MemFree/ { printf "%.3f \n", $2/1024/1024 }' /proc/meminfo` 。信用去[这里](awk '/MemFree/ { printf "%.3f \n", $2/1024/1024 }' /proc/meminfo)。 (4认同)

gho*_*g74 21

phymem=$(awk -F":" '$1~/MemTotal/{print $2}' /proc/meminfo )
Run Code Online (Sandbox Code Playgroud)

或免费使用

phymem=$(free|awk '/^Mem:/{print $2}')
Run Code Online (Sandbox Code Playgroud)

或使用shell

#!/bin/bash

while IFS=":" read -r a b
do
  case "$a" in
   MemTotal*) phymem="$b"
  esac
done <"/proc/meminfo"
echo $phymem
Run Code Online (Sandbox Code Playgroud)

  • 我喜欢这个,因为你可以将`-m`,`-g`等传递给`free`以获得它在不同的单位:) (4认同)

psc*_*tel 9

我假设物理内存将是free的输出中的第一个数字,我想出了这个:

free -m | grep -oP '\d+' | head -n 1
Run Code Online (Sandbox Code Playgroud)

这允许你配置free来输出你想要的单位(-m,-g,...)并且它独立于系统语言(其他答案取决于free的输出中的"Mem:"字符串,它可能会根据语言.


kiw*_*ptn 8

怎么样

var=$(free | awk '/^Mem:/{print $2}')
Run Code Online (Sandbox Code Playgroud)