• shell习题第17题:检测磁盘


    【题目要求】

    写一个shell脚本,检测所有磁盘分区使用率和inode使用率并记录到以当天日期命名的日志文件里,当发现某个分区容量或者inode使用量大于85%时候,发邮件提醒

    【核心要点】

    df

    df -i

    date +%F

    【脚本】

    #!/bin/bash
    
    dir=/tmp/disk
    d=`date +%F`
    
    [ -d $dir ] || mkdir $dir
    
    df >> $dir/$d.log
    df -i >> $dir/$d.log
    
    df | sed '1d' | awk -F' +|%' '$5>=85 {print $7}' > $dir/df.tmp
    df -i | sed '1d' | awk -F' +|%' '$5>=85 {print $7}' > $dir/df_i.tmp
    
    n1=`wc -l $dir/df.tmp | awk '{print $1}'`
    n2=`wc -l $dir/df_i.tmp | awk '{print $1}'`
    
    tag=0
    if [ $n1 -gt 0 ]; then
        if [ $n2 -gt 0 ]; then
            tag=11
        else
            tag=10
        fi
    else
        if [ $n2 -lt 0 ]; then
            tag=01
        else
            tag=00
        fi
    fi
    
    case $tag in 
        11)
            python mail.py "磁盘空间和inode使用率高于85%" "`cat $dir/df.tmp $dir/df_i.tmp | xargs`"
        ;;
        10)
            python mail.py "磁盘空间使用率高于85%" "cat $dir/df.tmp | xargs"
        ;;
        01)
            python mail.py "磁盘inode使用率高于85%" "cat $dir/df_i.tmp | xargs"
        ;;
        00)
            echo "没问题"
        ;;
    esac
  • 相关阅读:
    用脚本实现对pm2.5 数据的获取
    虚拟机下的快盘空间分配方案
    C++中new的用法
    只在堆或栈上生成对象
    Virtualbox识别USB设备
    最长公共字序列
    gdb 打印vector 等stl数据
    LC_CTYPE: cannot change locale
    字符串压缩
    对象的概念
  • 原文地址:https://www.cnblogs.com/dingzp/p/10991065.html
Copyright © 2020-2023  润新知