zoukankan      html  css  js  c++  java
  • Shell程序实例集锦一

    2007-12-13 07:51:40
    Shell程序实例集锦一
     
     
     前言:下面这些hell实例都是自己写的或者用过的一些Shell小程序。整理整理。    ——Ajian

    1、删除B文件中和A文件相同的内容
    #!/bin/sh
    # Ajian
    for file in `cat a.list | cut -d. -f1`
    do
    sed -i '/'$file'/d' b.list
    done
     

    2、根据文件名的前四位创建二级目录
    #!/bin/sh
    #Ajian
    for dir in `cat dir.list`
    do
    dir1=`echo $dir | cut -c1-2`
    dir2=`echo $dir | cut -c3-4`
    if [ ! -d "$dir1/$dir2" ]; then
           mkdir -p "$dir1/$dir2"
    fi
    done


    3、查看网卡流量
    #!/bin/bash
    #netflood
    #Ajian
    while : ; do
           time=`date +%m"-"%d" "%k":"%M`
           day=`date +%m"-"%d`
           rx_before=`ifconfig eth0|sed -n "8"p|awk '{print $2}'|cut -c7-`
           tx_before=`ifconfig eth0|sed -n "8"p|awk '{print $6}'|cut -c7-`
           sleep 2
           rx_after=`ifconfig eth0|sed -n "8"p|awk '{print $2}'|cut -c7-`
           tx_after=`ifconfig eth0|sed -n "8"p|awk '{print $6}'|cut -c7-`
           rx_result=$[(rx_after-rx_before)/256]
           tx_result=$[(tx_after-tx_before)/256]
           echo "$time Now_In_Speed: "$rx_result"kbps Now_OUt_Speed: "$tx_result"kbps"
           sleep 2
    done


    4、系统状况监控
    #!/bin/sh
    #statistic.sh
    #Ajian
    IP=192.1681.41
    top -n 2| grep "Cpu" >>./data/cpu.txt
    free -m | grep "Mem" >> ./data/mem.txt
    df -k | grep "sda1" >> ./data/drive_sda1.txt
    #df -k | grep sda2 >> ./data/drive_sda2.txt
    df -k | grep "/mnt/storage_0" >> ./data/mnt_storage_0.txt
    df -k | grep "/mnt/storage_pic" >> ./data/mnt_storage_pic.txt
    time=`date +%m"."%d" "%k":"%M`
    connect=`netstat -na | grep "172.16.20.5:80" | wc -l`
    echo "$time  $connect" >> ./data/connect_count.txt


    5、系统服务及系统状况分析

    #!/bin/sh
    #server
    #################################
    #modify by ajian
    #function: It is convenient to restart some servers and reduce the wasted time.
    #DATE:  2007-7-2
    #################################
    #路径配置区
    APACHEPATH=""
    SMB_LOCAL_PATH1=""
    SMB_REMOTE_PATH1=""
    SMB_LOCAL_PATH2=""
    SMB_REMOTE_PATH2=""
    #################################
    #应用配置区
    SMBUSER=""
    SMBPASS=""
    SMB_UID=
    SMB_GID=
    #################################
    case $1 in
           "apache")
                   if [ $2 = "start" ]
                   then
                           echo "starting apache ..."
                           $APACHEPATH/apachectl start
                           echo "apache is started."
                           pidof httpd
                   elif [ $2 = "stop" ]
                   then
                           echo "stopping apache ..."
                           $APACHEPATH/apachectl stop
                           echo "apache is stopped."
                   elif [ $2 = "restart" ]
                   then
                           echo "restarting apache ..."
                           $APACHEPATH/apachectl stop
                           sleep 5
                           $APACHEPATH/apachectl start
                           echo "apache is restarted."
                           pidof httpd
                   else
                           echo "apache's $2 is error."
                   fi
                   ;;
           "smb")
                   if [ $2 = "remount" ]
                   then
                           echo "remounting smbfs..."
                           umount -f $SMB_LOCAL_PATH1
                           umount -f $SMB_LOCAL_PATH2
               echo "umount is finished."
                           sleep 5
                           mount -t smbfs -o username=$SMBUSER,password=$SMBPASS,ui
    d=$SMB_UID,gid=$SMB_GID $SMB_REMOTE_PATH1 $SMB_LOCAL_PATH1
                           mount -t smbfs -o username=$SMBUSER,password=$SMBPASS,ui
    d=$SMB_UID,gid=$SMB_GID $SMB_REMOTE_PATH2 $SMB_LOCAL_PATH2
                           echo "mount is finished."
                           df -h
                   elif [ $2 = "mount" ]
                   then
                           mount -t smbfs -o username=$SMBUSER,password=$SMBPASS,ui
    d=$SMB_UID,gid=$SMB_GID $SMB_REMOTE_PATH1 $SMB_LOCAL_PATH1
                           mount -t smbfs -o username=$SMBUSER,password=$SMBPASS,ui
    d=$SMB_UID,gid=$SMB_GID $SMB_REMOTE_PATH2 $SMB_LOCAL_PATH2
                           echo "mount is finished."
                           df -h
                   else
                           echo "smb's $2 is error."
                   fi
                   ;;
           "all")
                   echo "restart apache and remount..."
                   $APACHEPATH/apachectl stop
           sleep 5
                   umount -f $SMB_LOCAL_PATH1
                   umount -f $SMB_LOCAL_PATH2
                   sleep 5
                   mount -t smbfs -o username=$SMBUSER,password=$SMBPASS,uid=$SMB_U
    ID,gid=$SMB_GID $SMB_REMOTE_PATH1 $SMB_LOCAL_PATH1
                   mount -t smbfs -o username=$SMBUSER,password=$SMBPASS,uid=$SMB_U
    ID,gid=$SMB_GID $SMB_REMOTE_PATH2 $SMB_LOCAL_PATH2
                   echo "mount is finished."
                   df -h
                   $APACHEPATH/apachectl start
                   echo "apache is restarted."
                   sleep 5
                   pidof httpd
                   ;;
       "status")
           if [ $2 = "grather" ]
           then
               echo "Gather the status of the computer ....."
               /movivi/status.sh
               echo "Gather is finished."
           elif [ $2 = "analyze"  ]
           then
               echo "analyze the status.ch ......"
               /movivi/analyze.sh
               cat /movivi/data/sumary.txt
           fi
           ;;
           *)
                   echo "The method of using the script."
                   echo ""
           echo "  server apache stop      means:  关闭apache."
                   echo "  server apache start     means:  启动apache."                
                   echo "  server apache restart   means:  重启apache."
                   echo "  server remount            means:  关闭Mount点再挂载."
           echo "  server mount              means:  直接挂载Mount点."
                   echo "  server all                    means:  Include all of above."
                   echo "  server status gather     means:  收集系统信息."
           echo "  server status analyze    means:  分析处理并显示系统信息."
                   echo "  "
                   echo ""
                   ;;
    esac


    6、服务器采样程序(主要用于邮件发送报警 格式问题)
    #!/bin/sh
    # Create By : Ajian
    # file: watch.sh
    # Time: 2007-10-31
    ############################
    INPUT=/root/message
    TIME=`date +%m"."%d" "%k":"%M`
    echo "###################################################################################################" >> $INPUT
    echo "###################################################################################################" >> $INPUT
    echo "采样时间点: $TIME" >> $INPUT
    echo "////////////////////////////////////" >>  $INPUT
    echo "CPU使用情况:" >> $INPUT
    top -n 3 -b  | grep "Cpu" | awk '{print $1 $2 $3 $4 $5}'>> $INPUT
    echo "////////////////////////////////////" >>  $INPUT
    echo "内存使用情况:(单位M)" >> $INPUT
    free -m >> $INPUT
    echo "////////////////////////////////////" >>  $INPUT
    echo "服务器连接数:" >> $INPUT
    echo "Web连接     :`netstat -na | grep ":80" | wc -l`" >> $INPUT
    echo "TIMEWAIT连接:`netstat -na | grep ":80" | grep "TIME_WAIT" | wc -l`" >> $INPUT
    echo "数据库连接:`netstat -na | grep "3306" | wc -l`" >> $INPUT
    echo "////////////////////////////////////" >>  $INPUT
    echo "Apache 进程数:`ps aux | grep httpd | wc -l`" >> $INPUT
    echo "注:采样十分钟取一次,一小时发送一次" >> $INPUT
  • 相关阅读:
    redis-cluster的实例动态调整内存
    nginx upstream的五种分配方式
    cdn、回源等问题
    gpu机器安装nvidia-smi和python的tensorflow-gpu模块
    Hadoop、HBase、Spark单机安装
    数学的概念
    Eclipse 2020版安装&初始化
    191002一些岗位数量统计
    现象:SpringApplication.run后面的语句未执行
    Ubuntu 18.04安装docker
  • 原文地址:https://www.cnblogs.com/hanxing/p/4269173.html
Copyright © 2011-2022 走看看