Linuxshell脚本 · 2022年11月7日 0

利用shell检测本机所有磁盘分区读写是否都正常

【要求】

写一个检测脚本,用来检测本机所有磁盘分区读写是否都正常。

提示:可以遍历所有挂载点,然后新建一个测试文件,然后再删除测试文件,如果可以正常新建和删除,那说明该分区没问题

【解析】

该脚本核心点有两个

1)如何遍历所有挂载点

2)如何正常新建、删除文件

先来说第一点,遍历所有挂载点,可以使用df命令  ,首先运行看下结果吧 

挂载点就是最后面那一列,但是这些挂载点里,好几个都是devtmpfs和tmpfs,这些都不用管,这些是内存文件系统。

所以,需要过滤掉devtmpfs和tmpfs,可以这样实现

df |grep -v 'tmpfs' 

还需要将第一行去掉,可以使用sed ‘1d’实现:

df|sed '1d' |grep -v 'tmpfs'

如何获取到最后一列呢?可以使用awk ‘{print $NF}’

再来看第二点,如何正常新建、删除文件。可以使用touch  testfile  来测试创建一个临时文件,创建成功后再删除掉 rm  testfile。

当然,需要创建成功后,才能删除,所以中间需要一个 && 

touch testfile &&  rm  -f testfile

【答案】

最终脚本是这样的:

#!/bin/bash
for  mount_p in `df |sed '1d' |grep -v 'tmpfs' |awk '{print NF}'`
do
    touchmount_p/testfile  &&  rm -f mount_p/testfile
    if [? -ne 0 ]
    then
        echo "mount_p 读写有问题"
    else
        echo "mount_p 读写正常"
    fi
done