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
相關文章
相關標籤/搜索