查看当前Linux系统中是否存在未使用的磁盘

思路

  1. 给lsblk命令的查询结果编号
  2. lsblk命令过滤TYPE为disk的磁盘信息
  3. 相邻磁盘之前没有记录(行号差为1)且步骤2中mount信息为空则为未使用的磁盘
  4. 最后一条磁盘记录的行号和lsblk的总行号比较判断最后一块磁盘是否未使用

脚本

#!/bin/bash
declare -A diskInfo
declare -A mountInfo
#取总行数
totalLines=`lsblk|wc -l`
#取磁盘行号
tmp1=`lsblk|awk '/disk/{print NR}'`
lineList=($tmp1)
#取磁盘名
tmp2=`lsblk|awk '/disk/{print $1}'`
diskList=($tmp2)
#取mount信息
tmp3=`lsblk|awk '/disk/{print $NF}'`
mountList=($tmp3)
#行号和磁盘名关联
for ((i=0;i<${#lineList[*]};i++))
do
    diskInfo[${lineList[i]}]=${diskList[i]}
done
#行号和mount信息关联
for ((i=0;i<${#lineList[*]};i++))
do
    mountInfo[${lineList[i]}]=${mountList[i]}
done
#初始未使用的磁盘数量
j=0
#磁盘行号相减
for ((i=0;i<${#lineList[*]};i++))
do  
    let cnt=${lineList[i+1]}-${lineList[i]}
	if [ $cnt -gt 0 ];then
	    if [ $cnt -eq 1 ];then
		    if [ ${mountInfo[${lineList[i]}]} == "disk" ];then
			   echo -e "\033[31m${diskInfo[${lineList[i]}]} 磁盘没有使用\033[0m"
			   let j=j+1
			fi
		fi
    else
	    if [ ${lineList[i]} -eq $totalLines ];then
            if [ ${mountInfo[${lineList[i]}]} == "disk" ];then
		       echo -e "\033[31m${diskInfo[${lineList[i]}]} 磁盘没有使用\033[0m"
			   let j=j+1
		    fi
		fi
    fi

done
if [ $j -eq 0 ];then
   echo -e "\033[32m当前环境没有未使用的磁盘\033[0m"
fi
  • 3
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值