Shell脚本常用方法总结

#!/bin/bash
#Name: by  Egrep

#设置下载地址
URL='https://cdn.mysql.com//Downloads/MySQL-5.6/mysql-5.6.38.tar.gz'

#设置安装目录
PREFIX=/usr/local/$(basename ${URL%.tar.gz})

#设置数据目录
DATADIR=/usr/local/$(basename ${URL%.tar.gz})/data

#提示风格
启动:Starting sshd:
停止:Stopping sshd:
成功:SUCESS
失败:FAILED

#主程序
PROG=/bin/cp

#进程号
PID=`<./$PROG.pid`

#家目录
HOME=/home/mysql

#取得当前目录的绝对路径
$(dirname `readlink -f $0`)

经过试验,这种方法最稳妥,因为它能追踪软连接到真实的目录,就算自身被软连接也不影响使用。

#检测root权限
[ $(id -u) != "0" ] && echo "Error: You must be root to run this script" && exit

#检测是否已经安装过
[ -f $PREFIX/bin/mysqld_safe ] &&  echo "Error:MY-SQL Has been installed" && exit

#安装EPEL源
if hostnamectl &>/dev/null; then
    [[ -f /etc/yum.repos.d/epel.repo ]] || curl -o /etc/yum.repos.d/epel.repo http://mirrors.aliyun.com/repo/epel-7.repo
else
    [[ -f /etc/yum.repos.d/epel.repo ]] || curl -o /etc/yum.repos.d/epel.repo http://mirrors.aliyun.com/repo/epel-6.repo
fi

#下载函数
#调用:download <tar.gz的文件链接>,调用结果:1:下载并解压文件到当前目录, 2:得到文件名称
#功能:检测URL是否正确、本地文件存在不再重复下载,本地目录存在不再解压

function download() {
    if [[ -f ${1##*/} ]] ;then
        FILE=${1##*/} ; [[ -d ${FILE%.tar.gz} ]] || tar vxf ${1##*/}
    else
        [[ $1 != *.tar.gz ]] && echo 'URL Check Failed' && exit
        curl -o ${1##*/} $1 && tar vxf ${1##*/}
    fi
}

#编译函数
function Construct() {
     ...
}

#下载源码并进入目录
download $URL && cd ${FILE%.tar.gz} || exit 1

#编译安装
Construct && make && make install || exit 1


#显示成功的样式
function SUCESS() {
    echo -e "$*\033[59G[\033[32;1m OK \033[0m]"
}

#显示失败的样式
function FAILED() {
    echo -e "$*\033[59G[\033[1;31m FAILED \033[0m]"
}


#在当前用户添加一个定时任务
    #作用:添加一个定时任务
    #优点:免交互,无需root权限,防重复添加

NOTE='#logs clean'
TASK='00 02 * * * /bin/bash /app/yunwei/logs_clean.sh >/dev/null 2>/dev/null'
crontab -l | fgrep -q "${NOTE}" || echo -e "`crontab -l`\n${NOTE}" | crontab -
crontab -l | fgrep -q "${TASK}" || echo -e "`crontab -l`\n${TASK}" | crontab -


#启动脚本菜单
case "$1" in
    start)
        starting ;;
    stop)
        stopping ;;
    restart)
        stopping && sleep 5 ; starting ;;
    status)
        statusing ;;
    *)
        echo "Usage: $0 {start|stop|restart|status}" ;;
esac

 

posted @ 2018-03-17 21:35  运维面试辅导  阅读(373)  评论(2)    收藏  举报