查找总 RAM 内存和交换内存

Ven*_*nom 1 linux scripting memory

我需要编写一个脚本来查找多个 Linux 服务器(2000+)的总内存和总交换空间。我有一台受信任的服务器,无需密码即可登录所有这 2000 台服务器。

当我运行这个脚本时,它应该给出如下输出:

Server         total memory        swap
redhat1   
redhat2
redhat3
...
redhat2000
Run Code Online (Sandbox Code Playgroud)

我怎样才能实现这个目标?

Mat*_*Mat 5

/proc/meminfo文件包含您想要的信息。它也很容易解析。

这将为您提供 RAM 和交换区(按照这个顺序,在我知道的所有系统上单位都是 kB):

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

要格式化它,您可以执行以下操作:

printf "%s\t%d\t%d\n" $(hostname) \
                      $(awk '/^(MemTotal|SwapTotal)/{print $2}' /proc/meminfo)
Run Code Online (Sandbox Code Playgroud)

要将其与 ssh 结合起来,请执行以下操作:

for host in your_list_of_servers ; do
  printf "%s\t%d\t%d\n" $host \
                   $(ssh $host "awk '/^(MemTotal|SwapTotal)/{print \$2}' /proc/meminfo")
done
Run Code Online (Sandbox Code Playgroud)