<output id="qn6qe"></output>

    1. <output id="qn6qe"><tt id="qn6qe"></tt></output>
    2. <strike id="qn6qe"></strike>

      亚洲 日本 欧洲 欧美 视频,日韩中文字幕有码av,一本一道av中文字幕无码,国产线播放免费人成视频播放,人妻少妇偷人无码视频,日夜啪啪一区二区三区,国产尤物精品自在拍视频首页,久热这里只有精品12
      代碼改變世界

      Linux打包安裝部署腳本例子

      2025-09-17 17:09  瀟湘隱者  閱讀(25)  評論(0)    收藏  舉報

      在Linux系統中,我們經常需要創建腳本,然后將腳本上傳到生產環境的服務器,部署腳本并進行授權,然后創建作業. 如果公司部署了Ansible自動化運維工具話,那么可以批量部署處理.如果沒有Ansible這類自動化運維工具的話,我們可以通過腳本打包/安裝/部署腳本,避免一臺臺服務器手工處理. 下面通過一個例子簡單介紹一下.

      打包腳本

      上傳腳本mysql_log_maint_monitor/install.sh/package.sh和配置文件db_monitor.json到指定目錄.使用腳本package.sh進行打包

      腳本package.sh如下所示:

      #!/bin/bash
      
      #########################################################################################
      #                                                                                       #
      # 此腳本為打包腳本,生成可分發腳本的安裝包                                              #
      #                                                                                       #
      # #######################################################################################
      #                                                                                       #
      # ScriptName            :    package.sh                                                 #
      # Author                :    瀟湘隱者                                                      #
      # CerateDate            :    2026-08-15                                                 #
      # Email                 :    kerry2008code@qq.com                                       #
      #***************************************************************************************#
      # 參數配置                                                                              #
      #---------------------------------------------------------------------------------------#
      # 注意,此腳本可以作為通用的打包腳本使用,只需修改下面變量即可                           #
      #---------------------------------------------------------------------------------------#
      # PACKAGE_NAME    打包文件名稱                                                          #
      # VERSION         腳本版本                                                              #
      # SCRIPT_NAME     腳本名                                                                #
      # INSTALL_SCRIPT  安裝腳本名(install.sh)                                                #
      # Version        Modified Date            Description                                   #
      #***************************************************************************************#
      # V.1.0          2025-08-15              創建此腳本                                     #
      #########################################################################################
      
      # 定義包名和版本
      PACKAGE_NAME="mysql_log_maint_monitor"
      VERSION="2.1"
      OUTPUT_FILE="${PACKAGE_NAME}-${VERSION}.tar.gz"
      SCRIPT_NAME="mysql_log_maint_monitor"
      CONF_FILE="db_monitor.json"
      INS_SCRIPT_NAME="install.sh"
      readonly SUCCESS=0
      readonly FAILURE=1
      
      
      # 檢查必要文件是否存在(可以定制/改寫)
      if [ ! -f ${SCRIPT_NAME} ] || [ ! -f ${INS_SCRIPT_NAME} ]  || [ ! -f ${CONF_FILE} ] ; then
          echo "warning:缺少必要的文件,請確保${SCRIPT_NAME},${INS_SCRIPT_NAME}, ${CONF_FILE} 這些文件存在!"
          exit $FAILURE
      fi
      
      # 創建臨時目錄
      TMP_DIR=$(mktemp -d)
      mkdir -p $TMP_DIR/$PACKAGE_NAME
      
      # 復制文件到臨時目錄
      cp ${SCRIPT_NAME} $TMP_DIR/$PACKAGE_NAME/
      cp ${INS_SCRIPT_NAME} $TMP_DIR/$PACKAGE_NAME/
      cp ${CONF_FILE} $TMP_DIR/$PACKAGE_NAME/
      
      # 打包
      echo "正在創建安裝包: $OUTPUT_FILE"
      if tar -czf $OUTPUT_FILE -C $TMP_DIR $PACKAGE_NAME ;
      then
          echo "安裝包創建成功: $OUTPUT_FILE"
      else
      	echo "安裝報創建失敗,請檢查確認"
      fi
      
      # 清理臨時文件
      rm -rf $TMP_DIR
      
      # 顯示結果
      if [ -f "$OUTPUT_FILE" ]; then
          echo "文件大小: $(du -h $OUTPUT_FILE | awk '{print $1}')"
      else
          echo "安裝包創建失敗"
          exit $FAILURE
      fi
      
      
      檢查腳本package.sh中變量正確后(預先處理好,一般不會有問題),執行腳本package.sh打包文件,如下所示:
      
      ```bash
      $ sh package.sh 
      正在創建安裝包: mysql_log_maint_monitor-2.1.tar.gz
      安裝包創建成功: mysql_log_maint_monitor-2.1.tar.gz
      文件大小: 40K
      

      自動部署腳本

      將文件mysql_log_maint_monitor-2.1.tar.gz上傳后,按下面步驟執行,就會將腳本和配置文件拷貝指定目錄,并授予相關權限,然后配置生成crontab作業.具體如下所示:

      [mysql@dbtest04 install]$ pwd
      /data/install
      [mysql@dbtest04 install]$ ls
      mysql_log_maint_monitor-2.1.tar.gz
      [mysql@dbtest04 install]$ pwd
      /data/install
      [mysql@dbtest04 install]$ tar -xzvf mysql_log_maint_monitor-2.1.tar.gz 
      mysql_log_maint_monitor/
      mysql_log_maint_monitor/mysql_log_maint_monitor
      mysql_log_maint_monitor/install.sh
      mysql_log_maint_monitor/db_monitor.json
      [mysql@dbtest04 install]$ cd mysql_log_maint_monitor
      [mysql@dbtest04 mysql_log_maint_monitor]$ sh install.sh
      正在部署腳本...
      設置執行權限...
      /home/mysql/db_monitor/scripts/db_monitor.json腳本復制成功
      配置定時任務...
      ------------------------------------------------------
      安裝成功!
      腳本路徑: /home/mysql/db_monitor/scripts/mysql_log_maint_monitor
      定時任務: 每5分鐘執行一次系統監控
      */5 * * * * /home/mysql/db_monitor/scripts/mysql_log_maint_monitor
      ------------------------------------------------------
      [mysql@dbtest04 mysql_log_maint_monitor]$ crontab -l
      ###################################MySQL error log##############################################
      */5 * * * * /home/mysql/db_monitor/scripts/mysql_log_maint_monitor
      ################################################################################################
      [mysql@dbtest04 mysql_log_maint_monitor]$ 
      

      其中腳本install.sh的定義如下所示:

      #!/bin/bash
      
      readonly SUCCESS=0
      readonly FAILURE=1
      
      
      # 定義變量
      DEST_DIR="/home/mysql/db_monitor/scripts"
      LOG_DIR="/home/mysql/db_monitor/logs"
      # 此參數為傳入的變量賦值.
      SRC_SCRIPT_FILE="mysql_log_maint_monitor"
      SRC_CONF_FILE="db_monitor.json"
      DST_SCRIPT_FILE="${DEST_DIR}/${SRC_SCRIPT_FILE}"
      DST_CONF_FILE="${DEST_DIR}/${SRC_CONF_FILE}"
      
      # 檢查是否以mysql用戶運行腳本
      if [ "$(whoami)" != "mysql" ]; then
          echo "錯誤:請使用mysql用戶運行安裝程序 (sh install.sh xxx)"
          exit $FAILURE
      fi
      
      CURR_PATH=$(cd $(dirname $0) && pwd)
      
      if [ ! -f "${CURR_PATH}/${SRC_SCRIPT_FILE}" ];
      then
          echo "文件${CURR_PATH}/${SRC_SCRIPT_FILE}不存在,請檢查確認"
          exit $FAILURE
      fi
      
      if [ ! -f "${CURR_PATH}/${SRC_CONF_FILE}" ];
      then
          echo "文件${CURR_PATH}/${SRC_CONF_FILE}不存在,請檢查確認"
          exit $FAILURE
      fi
      
      
      # 創建部署安裝目錄(如果不存在)
      if [ ! -d ${DEST_DIR} ]; then
          if mkdir -p ${DEST_DIR} ; then
             echo "目錄${DEST_DIR}創建成功"
          else
             echo "error:目錄${DEST_DIR}創建失敗"
             exit $FAILURE
          fi
      fi
      
      if [ ! -d ${LOG_DIR} ]; then
          if mkdir -p ${LOG_DIR} ;
          then
              echo "目錄${LOG_DIR}創建成功"
          else
              echo "error:目錄${LOG_DIR}創建失敗"
              exit $FAILURE
          fi
      fi
      
      # 復制腳本到目標目錄
      echo "正在部署腳本..."
      
      
      
      # 檢查復制是否成功
      if cp $SRC_SCRIPT_FILE $DST_SCRIPT_FILE ; 
      then 
          # 授予執行權限
          echo "設置執行權限..."
          chmod +x $DST_SCRIPT_FILE
      else
          echo "error:腳本復制失敗"
          exit $FAILURE
      fi
      
      if cp "$SRC_CONF_FILE" "$DST_CONF_FILE" ; 
      then
          echo "${DST_CONF_FILE}腳本復制成功"
      else
          echo "error: 腳本復制失敗"
          exit $FAILURE
      fi
      
      
      
      # 配置定時任務
      echo "配置定時任務..."
      (crontab -l 2>/dev/null | grep -v -F "$DST_SCRIPT_FILE"; \
      echo "###################################MySQL error log##############################################"; \
      echo "*/5 * * * * $DST_SCRIPT_FILE" ;\
      echo "################################################################################################" \
      ) | crontab -
      
      # 驗證安裝
      if [ -f "$DST_SCRIPT_FILE" ] && [ -x "$DST_SCRIPT_FILE" ]; then
          echo "------------------------------------------------------"
          echo "安裝成功!"
          echo "腳本路徑: $DST_SCRIPT_FILE"
          echo "定時任務: 每5分鐘執行一次系統監控"
          crontab -l | grep "$DST_SCRIPT_FILE"
          echo "------------------------------------------------------"
         
      else
          echo "安裝部署失敗,請檢查錯誤信息"
          exit $FAILURE
      fi
      

      注意事項:

      1. 此腳本如果重復執行的話, 有一個小bug,如下所示,作業的注釋多了一行,暫時還未想到好的解決方法。不加注釋能規避這個問題。但是又不想這樣操作。
      [mysql@dbtest04 mysql_log_maint_monitor]$ sh install.sh 
      正在部署腳本...
      設置執行權限...
      /home/mysql/db_monitor/scripts/db_monitor.json腳本復制成功
      配置定時任務...
      ------------------------------------------------------
      安裝成功!
      腳本路徑: /home/mysql/db_monitor/scripts/mysql_log_maint_monitor
      定時任務: 每5分鐘執行一次系統監控
      */5 * * * * /home/mysql/db_monitor/scripts/mysql_log_maint_monitor
      ------------------------------------------------------
      [mysql@dbtest04 mysql_log_maint_monitor]$ crontab -l
      ###################################MySQL error log##############################################
      ################################################################################################
      ###################################MySQL error log##############################################
      */5 * * * * /home/mysql/db_monitor/scripts/mysql_log_maint_monitor
      ################################################################################################
      

      微信公眾號保存時,會將代碼中部分空格給刪除(暫時不清楚具體原因),你會看到部分代碼中兩個單詞之間沒有了空格,無法一一糾正,如需完整的代碼,請查看原文或從百度網盤獲取:

      鏈接: https://pan.baidu.com/s/1L7LKQFT0CmCaEIqFgAbBtA

      提取碼: 9q3b

      主站蜘蛛池模板: 韩国午夜福利片在线观看| 人妻有码av中文字幕久久琪| 激情久久av一区二区三区| 50路熟女| 久久久久香蕉国产线看观看伊| 亚洲夂夂婷婷色拍ww47| 午夜福利片一区二区三区| 久久精品国产亚洲AⅤ无码| 视频一区二区不中文字幕| 国产在线无码精品无码| 国产丝袜在线精品丝袜| 人人妻人人狠人人爽天天综合网| 久久综合开心激情五月天| 中文字幕乱码一区二区免费| 国产suv精品一区二区| 久久精品国产亚洲av高| 免费日韩av网在线观看| 婷婷综合缴情亚洲| 国产午夜福利精品视频 | 国产在线精品欧美日韩电影| 夜夜添狠狠添高潮出水| 色综合久久夜色精品国产| 亚洲69视频| 午夜DY888国产精品影院| 精品人妻伦一二二区久久| 国产欧美日韩另类精彩视频| 亚洲中文久久久精品无码| 亚洲精品国产自在现线最新| 18禁网站免费无遮挡无码中文 | 国产精品一区二区久久精品 | 91久久性奴调教国产免费| 达日县| 东京热一区二区三区在线| 绯色蜜臀av一区二区不卡| 饥渴的熟妇张开腿呻吟视频| 黄色A级国产免费大片视频| 天堂网在线.www天堂在线资源| 亚洲精品国产精品国在线| 久久人人爽人人爽人人av| 波多野结衣久久一区二区| 精品麻豆国产色欲色欲色欲WWW|