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