乡下人产国偷v产偷v自拍,国产午夜片在线观看,婷婷成人亚洲综合国产麻豆,久久综合给合久久狠狠狠9

  • <output id="e9wm2"></output>
    <s id="e9wm2"><nobr id="e9wm2"><ins id="e9wm2"></ins></nobr></s>

    • 分享

      shell腳本實例,通向shell腳本大師的必經(jīng)之路

       印度阿三17 2019-08-10

      概述

      讀書百遍其義自見,shell腳本也是,只要例子看得多了,自然就知道怎么寫了。這里主要整理了20幾個例子,因為內(nèi)容比較多,所以分了幾次來做介紹了。下面的實例最好先自己思考怎么去實現(xiàn),然后再看下實現(xiàn)的方式,答案不是標(biāo)準(zhǔn)的,也存在一些可以繼續(xù)完善的地方。


      1、文件以日期命名,并寫入磁盤使用情況

      #!/bin/bash 
      #################################################
      #文件以日期命名,并寫入磁盤使用情況
      #################################################
      d=`date %Y-%m-%d` ##獲取日期
      logfile=$d.log ##定義日志文件名
      df -h > $logfile ##向文件寫入磁盤使用情況
      shell腳本實例,通向shell腳本大師的必經(jīng)之路

      ?


      2、統(tǒng)計日志文件中各個IP的訪問量

      1)、新建日志文件 ,文件名 1.txt

      123 -sdfjukhesdjkfghjkldf 
      456 -jsdigkhndjfgjd
      789 -dsfjkdhfjkhsdjkfhsjk
      123 -sdfhfjkhsjklaj
      789 -jfgduhdjkfghjkdf
      123 -dhsfgjkhsdjkghjkdf

      2)腳本2.sh

      #!/bin/bash
      #################################################
      ##取文件IP|排序|去重并統(tǒng)計各個IP重復(fù)數(shù)量|排序
      #################################################
      awk '{print $1}' 1.txt |sort -n |uniq -c |sort -n
      shell腳本實例,通向shell腳本大師的必經(jīng)之路

      ?


      3.計算Linux系統(tǒng)所有進(jìn)程占用內(nèi)存之和

      #!/bin/bash
      #################################################
      #計算Linux系統(tǒng)所有進(jìn)程占用內(nèi)存之和
      #################################################
      sum=0
      #利用for循環(huán)調(diào)取每一項進(jìn)程所使用的內(nèi)存,并依次求和
      for mem in `ps aux |awk '{print $6}' |grep -v 'RSS'`
      do
      sum=$[$sum $mem] ##內(nèi)存求和
      done
      echo "the usered mem $sum" ##輸出結(jié)果
      shell腳本實例,通向shell腳本大師的必經(jīng)之路

      ?


      4.監(jiān)控遠(yuǎn)程機器的存活,發(fā)現(xiàn)宕機示警

      #!/bin/bash
      #################################################
      #監(jiān)控遠(yuǎn)程機器的存活,發(fā)現(xiàn)宕機示警
      #################################################
      #假設(shè)遠(yuǎn)程機器IP為114.114.114.114
      ip=114.114.114.114
      d=`date %Y-%m-%d` ##獲取日期
      #while循環(huán)做循環(huán)監(jiān)控,"while :"為死循環(huán)
      while :
      do
      #使用ping命令,取丟包率的數(shù)值作為存活的判斷依據(jù)
      n=`ping -c2 $ip 2> /dev/null |grep 'received' |awk -F 'received, |%' '{print $2}'`
      n1=`echo $n |sed 's/[0-9]//g'`
      #判斷取值是否為空
      if [ -z "$n" ]
      then
      echo "error"
      exit
      #判斷取值是否為數(shù)字
      elif [ -n "$n1" ]
      then
      echo "error"
      exit
      #若丟包率不低于20%,則發(fā)送告警
      elif [ $n -ge 20 ]
      then
      #這里也可做外發(fā)郵件告警
      echo "more loss"
      else
      echo "$d : $ip is OK" > ip_monitor.log
      fi
      #監(jiān)控間隔為30秒
      sleep 30
      done
      shell腳本實例,通向shell腳本大師的必經(jīng)之路

      ?


      5.批量修改指定目錄下文件名、打包并還原文件名

      #!/bin/bash
      #################################################
      #批量修改指定目錄下文件名、打包并還原文件名
      #################################################
      #將目標(biāo)文件夾下的所有指定類型文件的文件名查找存在指定文件中
      find /home/scripts -type f -name "*.txt" > /home/scripts/txt.list
      #通過for循環(huán)遍歷所有文件,并依次改名
      for f in `cat /home/scripts/txt.list`
      do
      mv $f $f.bak
      done
      #定義一個時間命名的目錄作為打包文件的目錄
      d=`date %F`
      mkdir /home/scripts/txt_$d
      #將所有改名文件依次拷貝到打包文件的目錄下
      for f in `cat /home/scripts/txt.list`
      do
      cp $f.bak /home/scripts/txt_$d
      done
      #進(jìn)入指定目錄下進(jìn)行打包
      cd /home/scripts
      tar -czvf txt.tar.gz txt_$d
      #還原文件名
      for f in `cat /home/scripts/txt.list`
      do
      mv $f.bak $f
      done

      注:雖然打包的文件多了一層文件名,但是對于還原文件名變得十分容易

      shell腳本實例,通向shell腳本大師的必經(jīng)之路

      ?

      shell腳本實例,通向shell腳本大師的必經(jīng)之路

      ?


      6.判斷本機80端口是否監(jiān)聽,如果不存在,則重啟服務(wù)并發(fā)送郵件告警

      #!/bin/bash
      ###########################################################
      #判斷本機80端口是否監(jiān)聽,如果不存在,則重啟服務(wù)并發(fā)送郵件告警
      ###########################################################
      #判斷本機80端口是否監(jiān)聽,并執(zhí)行相應(yīng)動作(使用命令行作為判斷條件時,命令行正確執(zhí)行即滿足if條件,且用于判定的命令行不需要加反引號)
      if netstat -ntpl |grep -q ':80 '
      then
      exit
      else
      #這里也可做外發(fā)郵件告警
      echo "error"
      #service nginx restart
      fi
      #判斷是否啟動成功,如未成功,則將錯誤信息通過郵件進(jìn)行告警
      n=`pgrep -l httpd |wc -l` #列出所有httpd進(jìn)程的pid
      if [ $n -eq 0 ]
      then
      touch /tmp/nginx_start.err
      /usr/local/nginx/sbin/nginx start 2> /tmp/nginx_start.err
      fi
      if [ -s apache_start.err ] #if -s 選項,文件大小非0時為真
      then
      #這里也可做外發(fā)郵件告警
      echo "error"
      fi

      注:持續(xù)監(jiān)控可以采用任務(wù)計劃或while循環(huán)

      shell腳本實例,通向shell腳本大師的必經(jīng)之路

      ?


      7.多地備份數(shù)據(jù)庫(本地保留一周、遠(yuǎn)程保留一月)

      #!/bin/bash
      ###########################################################
      #多地備份數(shù)據(jù)庫(本地保留一周、遠(yuǎn)程保留一月)
      #date %Y # 年份(四位) eg: 2018
      #date %y # 年份后兩位 eg: 18
      #date %m # 月 eg: 07
      #date %d # 日 eg: 10
      #date %H # 24小時 eg: 11
      #date %M # 分 eg: 37
      #date %S # 秒 eg: 24
      #date %w # 星期(0-6) 0 表示周日
      #date %F # 完整日期 =%Y-%m-%d
      #date %T # =%H:%M:%S 時間 eg: 10:46:45
      ###########################################################
      d1=date %w
      d2=date %y-%m-d
      bakdir='/backup'
      r_bakdir='遠(yuǎn)程備份的IP地址':'遠(yuǎn)程備份的目錄' #通過ssh同步
      rs_bakdir='遠(yuǎn)程備份的IP地址'::'模塊名稱' #通過服務(wù)同步
      #定義接下來的命令涉及到的所有的正確輸出記錄在正確日志的目錄下,所有的錯誤輸出記錄在錯誤日志的目錄下
      exec 1> '正確日志的目錄' 2>'錯誤日志的目錄'
      echo "mysql backup begin at `date "%F %T"`"
      #備份到本地機器的文件以星期命名,周期為7天,超出7天后,同名的舊文件會被新文件覆蓋
      mysqldump -u'指定的用戶' -p'指定的密碼' '指定的數(shù)據(jù)庫' > $bakdir/$d1.sql
      #備份到遠(yuǎn)程機器的文件以日期命名,周期為31天,超出31天后,同名的舊文件會被新文件覆蓋
      rsync -az $bakdir/$d1.sql $r_bakdir/$d2.sql
      echo "mysql backup end at `date "%F %T"`"
      shell腳本實例,通向shell腳本大師的必經(jīng)之路

      ?


      這些實際上是平時寫shell腳本的一個一個片段,主要是記住實現(xiàn)的方式,邏輯通就可以了,下次就知道怎么寫了。

      來源:https://www./content-3-385301.html

        本站是提供個人知識管理的網(wǎng)絡(luò)存儲空間,所有內(nèi)容均由用戶發(fā)布,不代表本站觀點。請注意甄別內(nèi)容中的聯(lián)系方式、誘導(dǎo)購買等信息,謹(jǐn)防詐騙。如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請點擊一鍵舉報。
        轉(zhuǎn)藏 分享 獻(xiàn)花(0

        0條評論

        發(fā)表

        請遵守用戶 評論公約

        類似文章 更多