美文网首页我爱编程ITovm
OMV查询硬盘休眠状态(Linux通用)

OMV查询硬盘休眠状态(Linux通用)

作者: 龙天ivan | 来源:发表于2018-04-12 12:43 被阅读1724次

    这是一个针对OMV中查询硬盘休眠状态的方法,理论上适用于所有linux

    在OMV中,可以针对硬盘分别设置休眠:


    设置休眠

    设置完成后,怎么检测或查看是不是生效了呢?这就涉及到如何查询硬盘状态了,可以用以下命令查看单块磁盘:

    smartctl -i -n standby /dev/sdb|grep "mode"|awk '{print $4}'
    
    结果

    我有两块盘,怎么查看呢?

    echo `date +%c` && echo -n "/dev/sdb : " && smartctl -i -n standby /dev/sdb|grep "mode"|awk '{print $4}'  && echo -n "/dev/sdc : " && smartctl -i -n standby /dev/sdc|grep "mode"|awk '{print $4}'
    
    结果

    如果有很多块呢?上面这种方法就不好了,所以改进一下:

    #!/bin/bash 
    dsk=`ls /dev/|grep 'sd[a-z]$'`                                                                                                                                            
    echo `date +%c`                                                                                                                                              
    for i in $dsk;                                                                                                                                                                 
    do                                                                                                                                                                
    echo -n "/dev/$i : " ;                                                                                                                                               
    echo `smartctl -i -n standby /dev/$i|grep "mode"|awk '{print $4}' `;                                                                                                 
    done                                                                                                                                                                          
    exit 
    

    把这个存成ckdisk.sh到一个目录下,例如/root/code下,然后chmod +x ckdisk.sh增加可执行权限。

    回到omv界面,找计划任务,添加一个:


    添加计划任务

    注意路径要加对。

    保存应用后,点运行即可看到结果:


    运行

    以下是自动记录日志的方法补充


    补充:如果想自动记录硬盘休眠状态的日志可以按如下方法

    1. 修改chkdisk.sh为如下内容:
    #!/bin/bash 
    path="/root/code"   #这里一定要改成存放的实际路径,crontab比较坑,不支持相对路径没有办法
    echo $path
    if [ ! -d "$path/Disks" ];then
        mkdir $path/Disks;
    fi
    dsk=`ls /dev/|grep 'sd[a-z]$'`                                                                                                                                             
    for (( t=1;t<6;t++))
    do
        echo `date +%c`                                                                                                                                                
        for i in $dsk;                                                                                                                                                                 
        do                                                                                                                                                                 
            echo -n "/dev/$i : " ;                                                                                                                                                
            s=`smartctl -i -n standby /dev/$i|grep "mode"|awk '{print $4}' `;
            if [ -f "$path/Disks/$i.status" ];then
                st=`cat $path/Disks/$i.status`;
            else
                st='';
                touch $path/Disks/$i.status;
            fi
            echo $s>$path/Disks/$i.status;
            if [[ $s != $st ]];then
                echo `date +%c`>>$path/chkdisk.log                                                                                                                                                
                echo -n "/dev/$i : ">>$path/chkdisk.log;                                                                                                                                                
                echo $s>>$path/chkdisk.log;
            fi    
            echo $s;
        done                                                                                                                                                                             
        sleep 10
    done
    exit
    
    1. 修改计划任务为每分钟执行:


      image.png

      然后系统每10秒会检查一次硬盘状态(虽然计划任务是每分钟,但程序里已加入每10秒检测),如果硬盘状态发生变化,会自动记录到与chkdisk.sh同目录下的chkdisk.log中。状态不变则不记录日志。

    相关文章

      网友评论

        本文标题:OMV查询硬盘休眠状态(Linux通用)

        本文链接:https://www.haomeiwen.com/subject/wgouhftx.html