zoukankan      html  css  js  c++  java
  • 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

  • 相关阅读:
    VS 2008潜在强大的功能:提取EXE文件中的ICO等资源
    园友们注意:淘宝网上QQ会员 4钻 3元 等都为骗子行为
    Comet Async Process Request Handler
    WCF(Sender) to MSMQ to WCF(Receiver)
    ASP.NET Web Form GridView DetailsView Query Edit
    WCF NetTcp AsyncQueue Service
    Xml CDATA 序列化
    Sync Invoke Remoting Async Invoke
    .Net 4.0 Remoting ConcurrentQueue
    Socket Async Receive Data to LinkedList Buffer (telnet proxy server)
  • 原文地址:https://www.cnblogs.com/xiangsikai/p/8929807.html
Copyright © 2011-2022 走看看