virsh统计虚拟机占用内存的脚本

统计虚拟机

total_mem=0
for vm in $(virsh list --name); do 
    mem=$(virsh dommemstat $vm | awk '/actual/ {print $2}')
    total_mem=$((total_mem + mem))
done
echo "Total VM Memory: $((total_mem / 1024 / 1024)) GB"

打印每个虚拟机内存占用情况

#!/bin/bash
# 脚本用途:遍历所有虚拟机,显示内存信息(单位转换为 GB)

# 获取所有虚拟机名称(包括运行中和未运行的)
domain_list=$(virsh list --all --name)

if [ -z "$domain_list" ]; then
  echo "没有找到任何虚拟机。"
  exit 1
fi

for domain in $domain_list; do
  # 跳过空行
  if [ -z "$domain" ]; then
    continue
  fi
  echo "=============================="
  echo "虚拟机名称: $domain"
  echo "内存信息(单位:GB):"

  # 获取内存信息,并转换成 GB(1 GB = 1048576 KB)
  virsh dommemstat "$domain" | while read key value; do
    # 若 value 为空则跳过
    if [ -z "$value" ]; then
      continue
    fi
    # 使用 awk 进行单位换算并格式化为两位小数
    value_gb=$(awk "BEGIN {printf \"%.2f\", $value/1048576}")
    echo "$key: $value_gb GB"
  done

  echo "=============================="
  echo ""
done