SHELL 腳本小技巧


腳本很簡單,直接上功能介紹及腳本,可以做模板使用:

  1. 記錄日志,記錄腳本開始執行時間、結束時間
  2. usage 函數,腳本需接參數執行,避免誤執行,告訴用戶,這個腳本的使用方法
  3. 加鎖,創建鎖文件,腳本不允許多人同時執行,或腳本未執行結束又開始執行,尤其計划任務或數據庫備份,避免這種問題
    #!/bin/bash
    #######################################################
    # $Version:      v1.0
    # $Function:     Shell Template Script
    # $Author:       Jerry.huang
    # $organization: http://www.cnblogs.com/Mrhuangrui
    # $Create Date:  2017-06-30 09:30
    # $Description:  You know what i mean,heiheihei
    #######################################################
    
    # Shell Env
    SHELL_DIR="/opt/shell"
    SHELL_LOG="${SHELL_DIR}/$0.log"
    LOCK_FILE="/tmp/$0.lock"
    
    #Write Log 
    shell_log(){
        LOG_INFO=$1
        echo "$(date "+%Y-%m-%d") $(date "+%H-%M-%S") : $0 : ${LOG_INFO}" >> ${SHELL_LOG}
    }
    
    # Shell Usage
    shell_usage(){
        echo $"Usage: $0 {backup}"
    }
    
    shell_lock(){
        touch ${LOCK_FILE}
    }
    
    shell_unlock(){
        rm -f ${LOCK_FILE}
    }
    
    # Backup MySQL All Database with mysqldump or innobackupex
    mysql_backup(){
        if [ -f "$LOCK_FILE" ];then
            shell_log "$0 is running"
            echo "$0" is running,exit now. && exit
        fi
        shell_log "mysql backup start"
        shell_lock
        sleep 10
        shell_log "mysql backup stop"
        shell_unlock
    }
    
    # Main Function
    main(){
        case $1 in
            backup)
                mysql_backup
                ;;
            *)
                shell_usage;
        esac
    }
    
    #Exec
    main $1
    shell_template.sh

     


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM