• Shell 脚本进阶2



     1.查询系统基础情况脚本

    #!/bin/bash
    # 系统状态查询脚本
    # 输出系统基本信息
    #
    # 系统版本 
    SYSTEM_VERSION=`cat /etc/redhat-release`
    # 主机名
    HOSTNAME=`hostname`
    # 网卡名称
    DEV="ens32"
    # IP地址
    IP_ADDR=`ifconfig $DEV | grep -v inet6 | grep inet | awk '{print $2}'`
    # MAC地址
    MAC_ADDR=`ifconfig $DEV  | awk '/ether/{print $2}'`
    # 内核版本
    KERNEL_VERSION=`uname -a | awk '{print $3}'`
    # CPU版本
    CPU_VERSION=`cat /proc/cpuinfo | grep -n '^model name' | awk -F":" '{print $3 }'|sed 's/^ //g'`
    # 当前时间
    DATE=`date`
    # 启动时间
    DATE_START=`date -d "$(awk -F. '{print $1}' /proc/uptime) second ago" +"%Y-%m-%d %H:%M:%S"`
    #
    echo -e "
    +---------  $DATE  --------+
    "
    echo -e "主机名:
    $HOSTNAME
    "
    echo -e "系统版本:
    $SYSTEM_VERSION
    "
    echo -e "内核版本:
    $KERNEL_VERSION
    "
    echo -e "CPU版本:
    $CPU_VERSION
    "
    echo -e "系统IP:
    $DEV $IP_ADDR
    "
    echo -e "系统MAC:
    $DEV $MAC_ADDR
    "
    echo -e "启动时间:
    $DATE_START
    "
    #---------------------------
    # 系统负载
    # uptime
    #---------------------------
    CPU_NUM=`cat /proc/cpuinfo | grep processor | awk -F":" '{print $2}' | wc -l`
    Load=`uptime | awk -F"average:" '{print $2}' | awk -F"," '{print "<__  系统负载  __>  -->  ""CPU数量:'"$CPU_NUM"'""	1分钟:"$1"	5分钟:"$2"	15分钟:"$3}'`
    echo -e "
    $Load
    "
    #---------------------------
    # CPU状态
    # vmstat
    #---------------------------
    CPU_CHECK=`vmstat | awk '{print NR $0}' | awk '/^3/{print "<__  CPU状态   __>  -->  ""CPU使用:"$14"%	""CPU空闲:"$16"%"}'`
    echo -e "$CPU_CHECK
    "
    #---------------------------
    # 内存状态
    # free
    #---------------------------
    MEMORY=`free -mh | awk ' /^Mem/{print "<__  内存状态  __>  -->  ""内存总量:"$2"	已用内存:"$3"	剩余内存:"$4"	可用内存:"$7}'`
    echo -e "$MEMORY
    "
    #--------------------------
    # 磁盘使用
    # df
    #--------------------------
    DISK=`df -h | grep -n '/$' | awk '{print "<__  磁盘使用  __>  -->  ""磁盘容量:"$2"	已用容量:"$3"	可用容量:"$4}'`
    echo -e "$DISK
    "
    #---------------------------
    # 进程统计
    # top
    #---------------------------
    PROCESS=`top -bn1 | awk '/Tasks:/{print $0}' | awk '{print "<__  进程统计  __>  -->  ""进程总数:"$2"	运行进程:"$4"	休眠进程:"$6"	停止进程:"$8"	僵尸进程:"$10}'`
    echo -e "$PROCESS
    "
    #---------------------------
    # 磁盘IO使用情况
    # sar
    #---------------------------
    IO=`sar -b | grep -n '^[^0-9]' | awk '{print NR $0}'| awk '/^2/{print"<__  磁盘读写  __>  -->  ""读/秒:"$5" bytes""	写/秒:"$6" bytes"}'`
    echo -e "$IO
    "
    #---------------------------
    # 网卡流量使用情况
    # sar
    #---------------------------
    NETWORK=`sar -n DEV | grep $DEV | grep -n '^[^0-9]'|  awk '{print "<__  网卡流量  __>  -->  ""网卡名:"$2"	收包/秒:"$3"	发包/秒:"$4"	下载/秒:"$5" Bytes""   上传/秒:"$6" Bytes"}'`
    echo -e "$NETWORK
    "
    system_check.sh
    [root@localhost shell]# sh system_check.sh 
    
    +---------  2018年 04月 27日 星期五 11:00:55 CST  --------+
    
    主机名:
    localhost.localdomain
    
    系统版本:
    CentOS Linux release 7.4.1708 (Core) 
    
    内核版本:
    3.10.0-693.el7.x86_64
    
    CPU版本:
    Intel(R) Xeon(R) CPU E5-2603 v4 @ 1.70GHz
    Intel(R) Xeon(R) CPU E5-2603 v4 @ 1.70GHz
    
    系统IP:
    ens32 192.168.1.159
    
    系统MAC:
    ens32 00:0c:29:b0:e8:12
    
    启动时间:
    2018-04-19 09:12:48
    
    
    <__  系统负载  __>  -->  CPU数量:2    1分钟: 0.12    5分钟: 0.04    15分钟: 0.05
    
    <__  CPU状态   __>  -->  CPU使用:0%    CPU空闲:100%
    
    <__  内存状态  __>  -->  内存总量:3.7G    已用内存:181M    剩余内存:2.8G    可用内存:3.2G
    
    <__  磁盘使用  __>  -->  磁盘容量:50G    已用容量:1.3G    可用容量:49G
    
    <__  进程统计  __>  -->  进程总数:116    运行进程:1    休眠进程:115    停止进程:0    僵尸进程:0
    
    <__  磁盘读写  __>  -->  读/秒:0.00 bytes    写/秒:0.93 bytes
    
    <__  网卡流量  __>  -->  网卡名:ens32    收包/秒:10.74    发包/秒:1.60    下载/秒:0.65 Bytes   上传/秒:0.10 Bytes
    输出案例

     2.查看目录下包含子目录的所有指定静态文件,测试响应请求时间。

    #!/bin/bash
    # Nginx代理访问
    #Dname="http://192.168.1.10:8081"
    # Tomcat代理访问
    Dname="http://192.168.1.10:8080"
    # 指定目录
    DIR="/upload/"
    function request(){
      list=`ls $DIR`
      cd $DIR
      for i in $list;do
        if test -d $i;then
           DIR=$i
           request $DIR
        else
           if echo $i | grep .png >/dev/null 2>&1 || echo $i | grep .jpg >/dev/null 2>&1;then
              Fname=$i
              URL=`pwd`
              # 求出静态文件响应时间
              Total=`curl -o /dev/null -s -w '%{time_total}
    ' $Dname$URL/$Fname`
              # 求出文件大小
              Filesize=`du -sh $URL/$Fname 2>/dev/null | awk -F' ' '{print $1}'`
              echo -e "资源URL:$URL/$Fname 大小:$Filesize 响应时间:33[31;31m$Total33[0m"
           fi
        fi
      done
      cd ../
    }
    
    request $DIR
    request.sh
    资源URL:/upload/app_port/H5/About_us.jpg 大小:60K 响应时间:0.016
    资源URL:/upload/org_cover/2018-08-08-2005-32-43/f2394d49adff4382829e289f8b8bdc0e/1.jpg 大小:60K 响应时间:0.015
    资源URL:/upload/org_cover/2018-08-11_13-53-46/a35bfc924d464736884eb196dafa3884/首页Banner-1.jpg 大小:11M 响应时间:0.004
    资源URL:/upload/org_cover/2018-08-11_13-55-33/188e03a5122946c8919202b8e5ba8c61/轮播图——春晚新(1).jpg 大小:1.3M 响应时间:0.004
    资源URL:/upload/org_cover/2018-08-11_14-22-58/db213c3b3a3944a3aa64771bc88952e1/2222.png 大小:1.8M 响应时间:0.094
    资源URL:/upload/org_cover/2018-08-13_14-11-02/03fe045379c9445fae8bf7f1bdcf7535/无标题1.png 大小:2.6M 响应时间:0.004
    资源URL:/upload/org_cover/2018-08-13_14-39-55/2599ba229a94422f9a4401ad30dd53b6/d.png 大小:428K 响应时间:0.040
    资源URL:/upload/org_cover/2018-08-13_14-43-04/b27aab0a8be0447596657274698b1a3a/k.jpg 大小:1.6M 响应时间:0.080
    资源URL:/upload/org_cover/2018-08-13_20-24-48/2b881550056f4735b183c85f9b904c11/20180806101549.jpg 大小:324K 响应时间:0.034
    资源URL:/upload/org_cover/2018-08-22_13-33-55/faa95902d9144d9f95b084d1e8344720/无标题3.png 大小:556K 响应时间:0.004
    资源URL:/upload/org_cover/2018-08-29_14-30-26/8b0df630ec0e4bf185383c9a9181c33b/微信图片_20180820164143.png 大小:36K 响应时间:0.004
    资源URL:/upload/org_images/2018-08-11_13-56-43/38596e1b6fd9499cb057972148c6634a/主播招募banner.jpg 大小:200K 响应时间:0.004
    资源URL:/upload/org_images/2018-08-11_13-56-43/648db3a1a6874671bd837b33f3271b3f/建党.jpg 大小:320K 响应时间:0.004
    资源URL:/upload/org_images/2018-08-11_13-56-43/6ac903e3a0114dddb57913f114eb6854/首页Banner-2.jpg 大小:324K 响应时间:0.004
    资源URL:/upload/org_images/2018-08-11_13-56-43/6c4aaf4227e04d9991ff2f526e4ea51e/首页Banner-3.jpg 大小:396K 响应时间:0.004
    资源URL:/upload/org_images/2018-08-11_13-56-43/98bc613d55764626a67ae54e3d889988/首页Banner-1.jpg 大小:11M 响应时间:0.004
    资源URL:/upload/org_images/2018-08-11_13-56-43/9cf0130084fe4702a9ad74cf7f4bcb9e/首页Banner-4.jpg 大小:332K 响应时间:0.004
    资源URL:/upload/org_images/2018-08-11_13-56-43/bf34729ef37b474888721b77c8baca3f/网站banner1.jpg 大小:796K 响应时间:0.004
    资源URL:/upload/org_images/2018-08-11_13-56-43/dacc1c8f298c4e05af4b3a13c743dcd9/千金答人1.jpg 大小:248K 响应时间:0.004
    输出案例

    3.创建Linux回收站、每3天自动清空

    ##############
    # 添加自定义命令
    # vim /etc/bashrc 
    # alias rm='sh /root/changerm.sh'
    ##############
    #!/bin/bash
    trash_dir=/trash/`date +%Y%m%d`
    if [ ! -d ${trash_dir} ];then
        mkdir -p ${trash_dir}
    fi
    
    for i in $*
    do
        suffix=`date "+%H%M%S"`
        if [ ! -d "${i}" ]&&[ ! -f "${i}" ];then
           if [[ "${i}" != "-rf" && "${i}" != "-f" ]];then
               echo "[${i}] do not exist"
           fi
        else
           file_name=`basename $i`
           mv ${i} ${trash_dir}/${file_name}_${suffix}_${RANDOM}
           echo "[${i}] delete completed !!!"
        fi
    done
    changerm.sh
    ###########
    # 添加计划任务
    # crontab -e
    # 00 22 * * * sh /root/cleartrash.sh
    ###########
    #!/bin/bash
    trashdir=/trash
    cd ${trashdir}
    # 删除该目录下三天以上的文件
    find ./ -mtime +3 -exec 'rm' -rf {} ;
    cleartrash.sh

    4.mysq备份脚本,全量备份,增量备份需手动开启后在开启删除开关

    #!/bin/bash              
    # @author:kevin.xiang    
    # create -e              
    # 0 0 * * 0 bash /mysql  
    ##########################
    DATA=`date +%Y%m%d%H-%T`
    BIN_DIR="/usr/bin/"
    BACKUP_DIR="/backup/"
    LOG_DIR="/var/log/mariadb/"
    DB_IP="localhost"
    DB_ROOT="root"
    DB_PASSWD="xiangsikai"
    # Binary log deletion.  0 on | 1 off 
    Flag=1
    
    #-- Full amount of backup
    function backup_all() {
      sudo ${BIN_DIR}mysqldump -h${DB_IP} -u${DB_ROOT} -p${DB_PASSWD} --all-databases  > ${BACKUP_DIR}mysqlbackup_${DATA}.sql
      if [ $? == 0  ];then
        sudo ${BIN_DIR}gzip ${BACKUP_DIR}mysqlbackup_${DATA}.sql >/dev/null 2>&1
        echo "${DATA} full backup successful !!!">> ${LOG_DIR}backup.log
      else
        echo "${DATA} full backup failure !!!" >> ${LOG_DIR}backup.log
      fi
    }
    
    #-- Incremental of backup
    function backup_incremental() {
    if [ ${Flag} == 0 ];then
    sudo mysql -u${DB_ROOT} -p${DB_PASSWD} -h${DB_IP} << EOF >/dev/null 2>&1
    reset master;
    flush privileges;
    EOF
    echo "${DATA} Clean binary file !!!" >> ${LOG_DIR}backup.log
    fi
    }
    
    #-- Run backup
    file_num=`find ${BACKUP_DIR} -name "*.sql.gz" | ${BIN_DIR}wc -l`
    if [ ${file_num} -ge 3 ];then
      old_file=`${BIN_DIR}ls -lrt ${BACKUP_DIR} | ${BIN_DIR}awk 'NR==2' | ${BIN_DIR}awk '{print $9}'`
      sudo ${BIN_DIR}rm -rf ${BACKUP_DIR}${old_file} >/dev/null 2>&1
      if [ $? == 0   ];then
        echo "${DATA} Clean ${old_file} file successfully !!!" >> ${LOG_DIR}backup.log
      else
        echo "${DATA} Clean ${old_file} file failure !!!" >> ${LOG_DIR}backup.log
      fi
      backup_all
      backup_incremental
    else
      backup_all
      backup_incremental
    fi
    mysql.sh

  • 相关阅读:
    372. Super Pow
    224. Basic Calculator + 227. Basic Calculator II
    263. Ugly Number + 264. Ugly Number II + 313. Super Ugly Number
    169. Majority Element
    225. Implement Stack using Queues + 232. Implement Queue using Stacks
    551. Student Attendance Record I + Student Attendance Record II
    765. Couples Holding Hands
    547. Friend Circles
    535. Encode and Decode TinyURL
    87. Scramble String
  • 原文地址:https://www.cnblogs.com/xiangsikai/p/8929807.html
Copyright © 2020-2023  润新知