加入收藏 | 设为首页 | 会员中心 | 我要投稿 聊城站长网 (https://www.0635zz.com/)- 智能语音交互、行业智能、AI应用、云计算、5G!
当前位置: 首页 > 站长学院 > MySql教程 > 正文

企业级使用shell是如何开发MySQL开启脚本的

发布时间:2023-09-22 15:47:01 所属栏目:MySql教程 来源:
导读:MySQL启动命令为:

/bin/sh mysqld_safe --pid-file=$mysqld_pid_file_path 2>&1 > /dev/null &

停止命令为:

mysqld_pid=`cat "$mysqld_pid_file_path"`

if (kill -0 $mysqld_pid 2>/dev/null)
MySQL启动命令为:
 
/bin/sh mysqld_safe --pid-file=$mysqld_pid_file_path 2>&1 > /dev/null &
 
停止命令为:
 
mysqld_pid=`cat "$mysqld_pid_file_path"`
 
if (kill -0 $mysqld_pid 2>/dev/null)
 
  then
 
    kill $mysqld_pid
 
    sleep 2
 
fi    
 
请完成MySQL启动脚本的编写
 
要求:用函数,case语句、if语句等实现。
 
解答:
 
企业级使用shell是如何开发MySQL启动脚本的
 
 [root@db02 scripts]# cat /etc/init.d/oldgirl
 
#!/bin/bash
 
# chkconfig: 2345 64 36
 
# description: MySQL startup
 
#Author:oldboy
 
#Blog:企业级使用shell是如何开发MySQL启动脚本的http://oldboy.blog.51cto.com
 
#Time:2017-07-07 09:24:34
 
#Name:企业级使用shell是如何开发MySQL启动脚本的mysqld.sh
 
#Version:V1.0
 
#Description:This is a test script.
 
[ -f /etc/init.d/functions ] && source /etc/init.d/functions
 
Port=3306
 
User="root"
 
Bindir="/application/mysql/bin"
 
Datadir="/application/mysql/data"
 
mysqld_pid_file_path="/application/mysql/`hostname`.pid"
 
PATH="/sbin:/usr/sbin:/bin:/usr/bin:$basedir/bin"
 
export PATH
 
return_value=
 
# Lock directory.
 
lockdir='/var/lock/subsys'
 
lock_file_path="$lockdir/mysql"
 
log_success_msg(){
 
    echo " SUCCESS! $@"
 
}   
 
log_failure_msg(){     
 
    echo " ERROR! $@"
 
}
 
case "$1" in
 
    start)            
 
        # Start daemon
 
        echo "Starting MySQL"
 
        if test -x $Bindir/mysqld_safe
 
        then
 
            $Bindir/mysqld_safe --datadir="$Datadir" --pid-file="$mysqld_pid_file_path"  >/dev/null &
 
            return_value=$?
 
            sleep 2
 
            # Make lock for CentOS
 
            if test -w "$lockdir"
 
            then
 
                touch "$lock_file_path"
 
            fi
 
            exit $return_value
 
        else
 
            log_failure_msg "Couldn't find MySQL server ($bindir/mysqld_safe)"
 
        fi
 
        ;;
 
    stop)
 
        if test -s "$mysqld_pid_file_path"
 
        then
 
            mysqld_pid=`cat "$mysqld_pid_file_path"`
 
            if (kill -0 $mysqld_pid 2>/dev/null)
 
            then
 
                echo "Shutting down MySQL"
 
                kill $mysqld_pid
 
                return_value=$?
 
                sleep 2
 
            else
 
                log_failure_msg "MySQL server process #$mysqld_pid is not running!"
 
                rm -f "$mysqld_pid_file_path"
 
            fi
 
            # Delete lock for CentOS
 
            if test -f "$lock_file_path"
 
            then
 
                rm -f "$lock_file_path"
 
            fi
 
            exit $return_value
 
        else
 
            log_failure_msg "MySQL server PID file could not be found!"
 
        fi
 
        ;;
 
    restart)
 
        if $0 stop; then
 
            $0 start
 
        else
 
            log_failure_msg "Failed to stop running server, so refusing to try to start."
 
            exit 1
 
        fi
 
        ;;
 
    *)
 
        echo "Usage: $0  {start|stop|restart}"
 
        exit 1
 
        ;;
 
esac
 
exit $return_value
 
函数版:
 
 #!/bin/bash
 
# chkconfig: 2345 64 36
 
# description: MySQL startup
 
#Author:oldboy
 
#Blog:企业级使用shell是如何开发MySQL启动脚本的http://oldboy.blog.51cto.com
 
#Time:2017-07-07 09:24:34
 
#Name:企业级使用shell是如何开发MySQL启动脚本的mysqld.sh
 
#Version:V1.0
 
#Description:This is a test script.
 
[ -f /etc/init.d/functions ] && source /etc/init.d/functions
 
port=3306
 
user="root"
 
bindir="/application/mysql/bin"
 
datadir="/application/mysql/data"
 
mysqld_pid_file_path="/application/mysql/`hostname`.pid"
 
PATH="/sbin:/usr/sbin:/bin:/usr/bin:$basedir/bin"
 
export PATH
 
return_value=
 
# Lock directory.
 
lockdir='/var/lock/subsys'
 
lock_file_path="$lockdir/mysql"
 
log_success_msg(){
 
    echo " SUCCESS! $@"
 
}   
 
log_failure_msg(){     
 
    echo " ERROR! $@"
 
}  
 
start(){
 
    # Start daemon
 
    echo "Starting MySQL"
 
    if test -x $bindir/mysqld_safe
 
    then
 
        $bindir/mysqld_safe --datadir="$datadir" --pid-file="$mysqld_pid_file_path"  >/dev/null &
 
        return_value=$?
 
        sleep 2
 
        # Make lock for CentOS
 
        if test -w "$lockdir"
 
        then
 
            touch "$lock_file_path"
 
        fi
 
        exit $return_value
 
    else
 
        log_failure_msg "Couldn't find MySQL server ($bindir/mysqld_safe)"
 
    fi
 
}
 
stop(){
 
    if test -s "$mysqld_pid_file_path"
 
    then
 
        mysqld_pid=`cat "$mysqld_pid_file_path"`
 
        if (kill -0 $mysqld_pid 2>/dev/null)
 
        then
 
            echo "Shutting down MySQL"
 
            kill $mysqld_pid
 
            return_value=$?
 
            sleep 2
 
        else
 
            log_failure_msg "MySQL server process #$mysqld_pid is not running!"
 
            rm -f "$mysqld_pid_file_path"
 
        fi
 
        # Delete lock for CentOS
 
        if test -f "$lock_file_path"
 
        then
 
            rm -f "$lock_file_path"
 
        fi
 
        exit $return_value
 
    else
 
        log_failure_msg "MySQL server PID file could not be found!"
 
    fi
 
}
 
case "$1" in
 
    start)            
 
        start
 
        ;;
 
    stop)
 
        stop
 
        ;;
 
    restart)
 
        if $0 stop; then
 
            $0 start
 
        else
 
            log_failure_msg "Failed to stop running server, so refusing to try to start."
 
            exit 1
 
        fi
 
        ;;
 
    *)
 
        echo "Usage: $0  {start|stop|restart}"
 
        exit 1
 
        ;;
 
esac
 
exit $return_value
 
 

(编辑:聊城站长网)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章