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

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

    • 分享

      shell編程規(guī)范及變量

       夜貓速讀 2022-05-16

      一、編寫腳本的基本流程;

      二、腳本的基礎知識;

      三、腳本中變量的應用;

      一、編寫腳本的基本流程;

      1.shell腳本語言:幫助管理員實現(xiàn)批量化完成任務,結(jié)合計劃任務實現(xiàn)自動化運維;

      2.編寫腳本的流程:

        a.創(chuàng)建目錄,集中存放腳本文件;

        b.編寫腳本內(nèi)容;

               vi 腳本名.sh                ##編輯腳本文件

                #!/bin/bash                ##聲明解釋器

                #注釋內(nèi)容                ##可以注釋些信息,方便后續(xù)查看

                命令及控制語句                ##腳本的核心內(nèi)容

              :wq                        ##保存文件

        c.賦予腳本文件執(zhí)行權(quán)限:chmod +x 文件

        d.運行腳本;

      3.腳本的聲明:聲明使用哪種解釋器,cat /etc/shells文件中的所有解釋器都可以使用,解釋器可安裝;

      4.執(zhí)行腳本的方式:

        a.路徑執(zhí)行(必須有執(zhí)行權(quán)限);

              相對路徑

               絕對路徑

        b.source 腳本的絕對路徑或相對路徑(不需要執(zhí)行權(quán)限);

        c.sh -x 腳本的路徑(不需要執(zhí)行權(quán)限),并且會顯示命令和輸出結(jié)果;

      二、腳本的基礎知識;

      1. 重定向:改變了標準的輸入輸出狀態(tài);

        >:重定向輸出到某個位置,替換原有文件的所有內(nèi)容;

        >>:重定向追加輸出到某個位置,在原有文件的末尾添加內(nèi)容;

        <:重定向輸入某個位置的文件;

        2>:重定向錯誤輸出;

        2>>:重定向錯誤追加輸出到文件的末尾;

        &>:混合重定向輸出,正確錯誤的輸出結(jié)果都會輸出;

        1,2>:同上;

      2.管道符:將|前的命令的輸出結(jié)果作為管道|后的命令的輸入;

      3.echo命令:返回結(jié)果并顯示;

        語法:echo [選項] "需要返回的值"

        選項: 選項-e 若出現(xiàn)特殊字符則不將其轉(zhuǎn)義,當普通字符對待;

                  在返回值中\(zhòng)n 代表強制換行、\t代表制表符;

        內(nèi)容中的選項:"內(nèi)容\t內(nèi)容"                插入tab

                                "內(nèi)容\n內(nèi)容"                強制換行

      三、腳本中的變量的應用;

      1.概述:變量是一個筐,筐里裝的是變量的值,只需要將筐帶走,那么值也就隨之帶走,值為可變;

      2.優(yōu)點:簡化輸入,使腳本內(nèi)容更加清晰,提高腳本的適用性;

      3.分類:自定義變量、環(huán)境變量、位置變量、預定義變量;

      4.自定義變量的定義:

        a.定義變量:變量名=變量值

        b.查看變量:echo $變量名

        c.使用變量:在命令中直接使用 $變量名

        d.取消變量:unset 變量名

        e.變量的作用范圍:

                局部變量:變量名=變量值,此種變量只能在當前bash中有效;

              全局變量:export 變量名=變量值,此種變量在當前bash和當前子bash中有效;

              注:可用 bash命令開啟當前進程的子進程bash,exit退回到父bash進程;

        f.變量值中使用的括號:

           "":弱引用,會將雙引號內(nèi)的特殊符號與命令一起執(zhí)行,例:A="ls -ld"

               '':強引用,會將單引號內(nèi)的$、"、\等特殊符號失效,例:B="$A /etc/ ",B='$A /etc/';

              ``:在定義變量時,引用命令,在值中引用變量等同于$(),''不可嵌套,$()可以嵌套;例:A=`du -sh /etc/`

              $():在定義變量時,引用命令,可以嵌套;例:AC=$(rpm -qf $(which rz))

              注:當變量值中包含'單引號時,應使用\'將單引號進行轉(zhuǎn)義;

        g.變量名不能使用特殊符號,一般用大寫字母和下劃線;

        h.交互定義變量:

              read -p "提示文字信息" 變量的名稱

              提示文字信息:123

              echo $變量名

               123

      5.環(huán)境變量的定義:

        a.環(huán)境變量設置用戶工作環(huán)境,名稱不能修改,值可以修改;

        b.環(huán)境變量的常用:

              PATH=設置外部命令的存放的路徑,用冒號隔開

              TMOUT=設置登錄超時,單位為秒

              HISTSIZE=設置歷史命令記錄的條數(shù)

              LANG=設置語言環(huán)境(vi /etc/sysconfig/i18n  進行永久修改字符集)

              注:設置臨時環(huán)境變量時(注銷就失效了):export PATH=

        c.環(huán)境變量的查看:env命令查看當前工作環(huán)境的所有環(huán)境變量;

                                      /etc/profile文件為用戶每次登陸執(zhí)行的的配置文件;

                                      每個用戶家目錄中的.bash_profile是每個用戶獨立的環(huán)境變量配置文件;

      6.位置變量和預定義變量:

        a.位置變量用于將腳本參數(shù)傳遞給腳本,有$1-$9,除命令或腳本本身外的所有;

        b.預定義變量:用戶只能使用,不能創(chuàng)建,不能直接賦值;

                $0:為腳本本身或命令本身

              $*:為腳本后的所有參數(shù)

              $#:腳本參數(shù)數(shù)量統(tǒng)計

              $?:上一條命令是否執(zhí)行成功,返回值為0則成功,否則失敗

      注:在shell腳本中,所有的路徑必須為絕對路徑;

      編寫腳本:

      使用母盤克隆一個虛擬機,并命名為shell腳本測試機。

      一.練習腳本的基本編寫流程:

      1.確定任務及完成任務的命令

      2.編寫腳本整合任務

      3.授權(quán)并測試執(zhí)行

      [root@www ~]# mkdir -p /root/bin

      [root@www ~]# cd /root/bin

      [root@www bin]# vi sysinfo.sh 

      #!/bin/bash    ##從/etc/shells中選擇一個shell解析下面的內(nèi)容

      #by linuxfan

      #20160614

      #system info.

      #我的第一個腳本,這是一個注釋

      #查看網(wǎng)絡相關信息

      ip a

      hostname

      cat /etc/hosts

      cat /etc/resolv.conf

      ip r

      #查看設備包括內(nèi)存、cpu、磁盤等使用情況

      cat /proc/cpuinfo

      lscpu

      cat /proc/meminfo |grep -i total

      free 

      cat /proc/partitions

      df -hT

      ##查看進程和服務情況

      ps aux |wc -l

      service --status-all

      chkconfig --list |grep 3:on

      :wq

      [root@www bin]# chmod +x sysinfo.sh   ##授權(quán)

      [root@www bin]# /root/bin/sysinfo.sh   ##路徑執(zhí)行

      [root@www bin]# sh -x sysinfo.sh  ##測試時常用不需要執(zhí)行權(quán)限

      [root@www tmp]# source sysinfo.sh  ##一般用于讓配置文件生效等,不需要執(zhí)行權(quán)限

      二.變量及管道的使用:

      1.使用變量,編寫安裝apache的腳本:

      [root@www bin]# vim install_httpd.sh 

      #!/bin/bash

      #by fage 2016-01-14

      #install apache httpd!

      #############download httpd#####

      HV=httpd-2.2.17

      wget ftp://ftp.linuxfan.cn/tools/$HV.tar.gz -P /root

      ##########解壓縮,并安裝#############

      tar zxvf /root/$HV.tar.gz -C /usr/src/ >/dev/null

      cd /usr/src/$HV/

      ./configure --prefix=/usr/local/httpd --enable-so --enable-cgi --enable-rewrite --enable-ssl&&make &&make install &>/dev/null

      :wq

      以此類推,編寫安裝mysql及php的腳本

      chmod +x install_httpd.sh

      /root/bin/install_httpd.sh   ##執(zhí)行腳本并安裝

      ls /usr/local/httpd

      2.練習重定向和管道:

      [root@www bin]#ip a |grep eth0 |grep inet |awk {'print $2'} |awk -F '/' {'print $1'}

      [root@www bin]# vim  hosts.sh 

      #!/bin/bash

      #2016-01-14 by linuxfan

      ##設置hosts解析,為www.linuxfan.cn

      IP=$(ip a |grep eth0 |grep inet |awk {'print $2'} |awk -F '/' {'print $1'})

      read -p "input FQDN:" NANE

      echo "$IP $NANE"  >>/etc/hosts

      :wq

      [root@www bin]#sh -x hosts.sh

      [root@www bin]#cat /etc/hosts

      特殊變量及腳本的綜合應用

      一.環(huán)境變量:

      [root@ns ~]# env  ##查看所有的環(huán)境變量

      [root@ns ~]# echo -e "1\n2"  ##換行顯示

      [root@ns ~]# echo -e "1\t2"  ##在1和2之間加入tab顯示

      [root@ns ~]# echo -e "$PATH\n $SHELL\n $HOSTNAME\n $MAIL\n $HISTSIZE\n\t $LANG"

      注意:PATH為命令搜索路徑,SHELL為當前用戶使用的shell,HISTSIZE為歷史命令記錄條數(shù),LANG當前使用的語言

      [root@ns ~]# export  ##查看全局環(huán)境變量定義情況

      [root@ns ~]# export.UTF-8  ##設置語言,如果需要設置為中文將值改為zh_CN.UTF-8

      [root@ns ~]# locale  ##查看語言設置

      [root@ns ~]# unset HISTSIZE  ##取消環(huán)境變量HISTSIZE

      [root@ns ~]# vim /etc/DIR_COLORS  ##修改第81,128行的值如下

      81  DIR 01;43 

      128 .xz  01;32

      :wq

      [root@ns ~]# tar Jcf changecls.xz /etc/hosts ; mkdir dir  ##創(chuàng)建測試文件和目錄  

      [root@ns ~]# exit  ##注銷系統(tǒng),重新登錄驗證

      [root@ns ~]# ls  ##顏色已經(jīng)變了

      [root@ns ~]# echo "export TMOUT=300" >>/etc/profile  ##設置登陸超時TMOUT為永久生效的環(huán)境變量,注意只有寫入了文件的變量才是永久生效的

      [root@ns ~]# source /etc/profile

      [root@ns ~]# sed -i 's/HISTSIZE=100/HISTSIZE=800/g' /etc/profile  ##設置歷史命令條數(shù)

      [root@ns ~]# grep HIST /etc/profile |grep ^HI  ##驗證

      [root@ns ~]# source /etc/profile

      [root@ns ~]# echo $HISTSIZE

      總結(jié):環(huán)境變量是為用戶設置的工作環(huán)境參數(shù)的變量,修改時先測試,再寫入文件。

      二:位置變量和預定義變量:

      [root@ns bin]# vim position.sh ##編寫并理解位置變量和預定義變量

      #!/bin/bash

      echo "This is \$0:$0"

      echo "This is \$1:$1"

      echo "This is \$2:$2"

      echo "This is \$3:$3"

      echo "This is \$4:$4"

      echo "This is \$5:$5"

      echo "This is \$6:$6"

      echo "This is \$7:$7"

      echo "This is \$8:$8"

      echo "This is \$9:$9"

      echo "This is \$#:$#"

      echo "This is \$*:$*"

      echo "This is \$?:$?"

      echo "$0 is exec complete! "

      :wq

      [root@ns bin]# chmod +x position.sh

      [root@ns bin]# /root/bin/position.sh  a b c d e f g h x y z 

      [root@ns bin]# vim bak.sh 

      #!/bin/bash

      TF="/opt/benfen-$(date +%F).tar.gz"

      tar zcf $TF $* 1>/dev/null

      echo "\$0:exec $0 script."

      echo "\$#:total bakup $#."

      echo "\$*:bakup $*"

      echo "30 12 * * 7 /root/bin/bak.sh $*" >>/var/spool/cron/root

      :wq

      [root@ns bin]# chmod +x bak.sh

      [root@ns bin]# /root/bin/bak.sh  /etc/yum.repos.d/ /etc/sysconfig  /etc/hosts  ##備份,并觀察$0,$#,$*的作用

      三.編寫MySQL備份腳本:

      1.準備數(shù)據(jù)庫:

      [root@www bin]# vim sql.sh  ##在web服務器上編寫該腳本,

      #!/bin/bash

      ## by linuxfan.cn 2016.1.1

      mysql -uroot -p123123 <<END

      create database studydb;

      create database coursedb;

      grant select,lock tables on studydb.* to operator@'192.168.100.151' identified by '123123';

      grant select,lock tables on coursedb.* to operator@'192.168.100.151' identified by '123123'

      show grants for operator@'192.168.100.151';

      END

      :wq

      請完成下列操作后再執(zhí)行腳本:

      netstat -utpln |grep 3306  ##確認數(shù)據(jù)開啟

      mysql -uroot -p123123  ##能登錄數(shù)據(jù)庫

      chmod +x sql.sh  ##授權(quán)

      在上述腳本中使用變量,將可能隨著主機的IP,數(shù)據(jù)庫名稱,密碼,用戶名設置為變量后并替換掉相應的位置。

      2.編寫備份數(shù)據(jù)的腳本:

      在ca服務器上完成:

      [root@ca ~]# mkdir bin

      [root@ca ~]# cd bin/

      [root@ca bin]# vim dbbak.sh

      #!/bin/bash

      ## by linuxfan.cn

      ## 2016.1.1

      mkdir /opt/dbbak/

      /usr/bin/mysqldump -uoperator -p123123 -h 192.168.100.150 --databases coursedb >/opt/dbbak/coursedb-$(date +%F-%H:%M).sql >/dev/null

      /usr/bin/mysqldump -uoperator -p123123 -h 192.168.100.150 --databases studydb >/opt/dbbak/studydb-$(date +%F-%H:%M).sql >/dev/null

      /bin/tar Jcf /opt/dbbak/coursedb-$(date +%F-%H:%M).tar.xz /opt/dbbak/coursedb-$(date +%F-%H:%M).sql --remove &>/dev/null

      /bin/tar Jcf /opt/dbbak/studydb-$(date +%F-%H:%M).tar.xz /opt/dbbak/studydb-$(date +%F-%H:%M).sql --remove &>/dev/null

      :wq

      請完成下列操作后再執(zhí)行腳本:

      mount /dev/cdrom /mnt

      yum -y install mysql  ##安裝mysql客戶端

      mysql -uoperator -p123123 -h 192.168.100.150  ##登錄測試

      mysqldump -uoperator -p123123 -h 192.168.100.150 --databases studydb >test.sql;ls ##查看是否能成功備份

      在上述腳本中使用變量,將用戶,數(shù)據(jù)庫名稱,密碼,主機IP,時間,備份后的sql文件名稱,壓縮文件的名稱定義成變量,并替換相應的位置。

      chmod +x dbbak.sh

      腳本測試:

      sh -x dbbak.sh

      ls /opt/dbbak/  ##查看是否只有xz后綴的文件

      測試成功后添加計劃任務:

      echo "30 2 * * *  /root/bin/dbbak.sh"  >>/var/spool/cron/root

        轉(zhuǎn)藏 分享 獻花(0

        0條評論

        發(fā)表

        請遵守用戶 評論公約

        類似文章 更多