SHELL 脚本小技巧

时间:2023-03-09 18:58:11
SHELL 脚本小技巧

脚本很简单,直接上功能介绍及脚本,可以做模板使用:

  1. 记录日志,记录脚本开始执行时间、结束时间
  2. usage 函数,脚本需接参数执行,避免误执行,告诉用户,这个脚本的使用方法
  3. 加锁,创建锁文件,脚本不允许多人同时执行,或脚本未执行结束又开始执行,尤其计划任务或数据库备份,避免这种问题
    #!/bin/bash
    #######################################################
    # $Version: v1.
    # $Function: Shell Template Script
    # $Author: Jerry.huang
    # $organization: http://www.cnblogs.com/Mrhuangrui
    # $Create Date: -- :
    # $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=$
    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
    shell_log "mysql backup stop"
    shell_unlock
    } # Main Function
    main(){
    case $ in
    backup)
    mysql_backup
    ;;
    *)
    shell_usage;
    esac
    } #Exec
    main $

    shell_template.sh