每一个合格的Linux运维人员都应该做到熟练或精通Shell脚本编程,因为Shell脚本语言差不多是所有编程语言里最简单的语言,如果Shell脚本不行,意味着运维之路可能还没开始就将要终结。  ——老男孩

#!/bin/bash# chkconfig: 2345 64 36 #配置系统自启动# description: A very fast and reliable SQL database engine.############################################################### File Name: mysqld# Version: V1.0# Author: oldboy# Organization: # Created Time : 2018-06-05 08:58:19###############################################################引入系统函数库. /etc/init.d/functions#基础路径定义basedir='/application/mysql'bindir='/application/mysql/bin'lockdir='/var/lock/subsys'                                       lock_file_path="$lockdir/mysql"mysqld_pid_file_path='$basedir/data/`uname -n`.pid'#成功提示函数log_success_msg(){    #action为特殊的提示函数,$@为所有参数。    action "SUCCESS! $@" /bin/true}#失败提示函数log_failure_msg(){    action  "ERROR! $@" /bin/false  }#mysql启动函数start(){    echo $"Starting MySQL"    #测试mysqld_safe是否可执行    if test -x $bindir/mysqld_safe    then        #后台执行启动mysql命令        $bindir/mysqld_safe &>/dev/null &        #获取返回值        retval=$?        #判断返回值是否为0        if [ $retval -eq 0 ]        then            #调用成功提示函数。            log_success_msg "mysql Startup"            if test -w "$lockdir" #判断锁目录是否可写。            then                touch "$lock_file_path" #创建锁文件。            fi            return $retval #给返回值是专业的表现。        else            log_failure_msg "MySQL Startup" #调用失败函数提示。            return $retval        fi    else        log_failure_msg "Couldn't find MySQL server ($bindir/mysqld_safe)"    fi}#停止MySQL函数。stop(){    #判断mysql pid file大小是否为0。    if test -s "$mysqld_pid_file_path"    then        #读取pidfile        mysqld_pid=`cat "$mysqld_pid_file_path"`        #判断mysql pid对应的进程是否存在。        if (kill -0 $mysqld_pid 2>/dev/null)        then            echo $"Shutting down MySQL"            kill $mysqld_pid #停止MySQL命令。            retval=$?            if [ $retval -eq 0 ]            then                log_success_msg "MySQL Stop" #调用停止成功函数。                if test -f "$lock_file_path"                then                    rm -f "$lock_file_path"  #删除锁文件。                fi                return $retval            else                log_failure_msg "MySQL Stop."                return $retval            fi        else            log_failure_msg "MySQL server process mysqld_pid is not running!"            rm "$mysqld_pid_file_path"        fi      else        log_failure_msg "MySQL server PID file is null or not exist!"    fi}#接收传参判断并执行相应函数。case "$1" in    start)        start        retval=$?        ;;    stop)        stop        retval=$?        ;;    restart)        stop        sleep 2 #这里很重要,要休息一下。        start        retval=$?        ;;    *)        echo $"Usage:$0 {start|stop|restart}"        exit 2esacexit $retval    #执行脚本后,有返回值才更专业。

文章取自,国内经典Shell编程实战图书,《跟老男孩学习Linux运维:Shell编程实战》。

如果你也对互联网感兴趣