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
提供面试指导、模拟面试、简历项目优化和职业规划等
负责SRE团队,运维架构(DevOps)、微服务流量治理(K8s、Ingress)、稳定性和可测性系统建设(Prometheus、EFK、Loki)

浙公网安备 33010602011771号