Linux基础及总结8之shell练习

2019-12-21  本文已影响0人  牵挂包含一种欣赏

1、显示统计占用系统内存最多的进程,并排序。

    1)使用htop工具,鼠标点击MEM%

       2)使用top命令,输入大写的M按内存排序

2、编写脚本,使用for和while分别实现192.168.0.0/24网段内,地址是否能够ping通,若ping通则输出"success!",若ping不通则输出"fail!"

#!/bin/bash

ipaddr="192.168.2."

for i in {1..254};do 

       ping -c1 -W1 $ipaddr$i &> /dev/null

      if [ $? -eq 0 ];then

          echo "ping $ipaddr$i success!"

       else

      echo "ping $ipaddr$i fail!"

       fi                                                                                                                               

done

#!/bin/bash

for i in {1..254};do

  echo 10.0.35.$i >> ip.txt

done

sleep 3

while read ip;do

  {

  ping -c1 -W1 $ip &> /dev/null

  if [ $? -eq 0 ];then

    echo "ping $ip success"

  else

    echo "ping $ip fail"

  fi

  } &

done < ip.txt

wait

3、每周的工作日1:30,将/etc备份至/backup目录中,保存的文件名称格式 为“etcbak-yyyy-mm-dd-HH.tar.xz”,其中日期是前一天的时间

    crontab -e 

       30 1 * * 1-5 /bin/bash /root/etc_bak.sh &> /dev/null

     #!/bin/bash 

    sdir="/etc"

    ddir="/backup"

    if [ ! -d $ddir ];then

      mkdir -p $ddir

    fi

    tar czf $ddir/etcbak-`date -d "-1 day" +%F`.tar.xz $sdir &> /dev/null

    if [ $? -eq 0 ];then

          echo "`date "+%F"` backup $sdir file success" >> $ddir/backup.log

    else

        echo "`date "+%F"` backup $ddir file fail" >> $ddir/backup.log

    fi

4、工作日时间,每10分钟执行一次磁盘空间检查,一旦发现任何分区利用率高 于80%,就发送邮件报警

crontab -e 

       */10 * * * * /bin/bash /root/etc_bak.sh &> /dev/null

  #!/bin/bash

    declare -A disk

    warning=70

    df -H|sed -nr 's#^(/dev/.*) ([0-9]+%).*#\1 \2#p' > diskinfo.txt

    while read line;do

       index=`echo $line|sed -nr 's#^([^[:space:]]+) .*#\1#p'`

       disk[$index]=`echo $line|sed -nr 's#.* ([[:digit:]]+)%.*#\1#p'`

       if [ ${disk[$index]} -gt $warning ];then

        echo "磁盘$index:使用率达到${disk[$index]}%,请关注!!"|mail -s "磁盘空间使用率超过70%告警"  XXXXXX@qq.com

      fi

    done < diskinfo.txt

脚本执行测试结果:

上一篇下一篇

猜你喜欢

热点阅读