工作中这种检测脚本太常见了

嵌入式技术

1337人已加入

描述

【要求】

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

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

【解析】

该脚本核心点有两个

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
    touch $mount_p/testfile  &&  rm -f $mount_p/testfile
    if [ $? -ne 0 ]
    then
        echo "$mount_p 读写有问题"
    else
        echo "$mount_p 读写正常"
    fi
done

 

 审核编辑:汤梓红

 

打开APP阅读更多精彩内容
声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉

全部0条评论

快来发表一下你的评论吧 !

×
20
完善资料,
赚取积分