Shell如何操作开发企业级服务启动脚本
admin
2023-05-17 15:42:08
0

本文主要给大家介绍Shell如何操作开发企业级服务启动脚本,文章内容都是笔者用心摘选和编辑的,具有一定的针对性,对大家的参考意义还是比较大的,下面跟笔者一起了解下Shell如何操作开发企业级服务启动脚本吧。 

说明:

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启动脚本的编写,并实现可以使用chkconfig配置开机自启动。

要求:用函数,case语句、if语句等实现。

Shell如何操作开发企业级服务启动脚本

解答:此题的技巧适合绝大多数启动脚本,例如:rsync,nginx等,仅以MySQL为例介绍思路。

简单、易用、高效、专业

#!/bin/bash
# chkconfig: 2345 64 36
# description: MySQL startup
# Author:oldboy
# Blog:http://oldboy.blog.51cto.com
# Time:2017-07-07 09:24:34
# Name:mysqld
# Version:V1.0
# Description:This is a test script.
[ -f /etc/init.d/functions ] && source /etc/init.d/functions
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=0


# Lock directory.
lockdir='/var/lock/subsys'
lock_file_path="$lockdir/mysql"

log_success_msg(){ 
    echo " SUCCESS! $@" # 注意函数的缩进,下同,也是专业的表现,可放到functions里。
}   
log_failure_msg(){     
    echo " ERROR! $@"
}  

# Start Func
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 Func
stop(){
    if test -s "$mysqld_pid_file_path" # 是否PID文件存在并大小大于0。
    then
        mysqld_pid=`cat "$mysqld_pid_file_path"`

        if (kill -0 $mysqld_pid 2>/dev/null) # 检查PID对应的进程是否存在。
        then
            echo "Shutting down MySQL"
            kill $mysqld_pid  # 不能带-9,否则后果自负。
            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 Oldboy's 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 #是否处理好返回值是区别脚本是否专业规范的关键。

看完以上关于Shell如何操作开发企业级服务启动脚本,很多读者朋友肯定多少有一定的了解,如需获取更多的行业知识信息 ,可以持续关注我们的行业资讯栏目的。

相关内容

热门资讯

伊朗外长:与阿曼谈判接近完成 △伊朗外交部长阿拉格齐(中)当地时间8月2日,伊朗外交部长阿拉格齐在政府内阁会议上介绍伊朗与阿曼谈判...
河南2026年“三支一扶”计划... 针对近期备受关注的2026年河南省“三支一扶”计划招募相关舆情,河南省“三支一扶”领导小组协调办公室...
以卵击石的“汉光演习”不过是一... 昨天题为《人民解放军越强大,台海和平越有保障》的海风文章,已经反映了一部分台海局势的现实。若再把8月...
美国一养老社区将推出面向老人的... 据《独立报》8月1日报道,美国亚利桑那州一养老社区将引入一台专为老年人设计的大麻自助售卖机,居民无需...
“你头发都白了”,同守广西边防... “你头发都白了,模样还是没变,就是没有年轻时候那么帅了。”
小米手机再度涨价:旗舰最高上涨... 8月2日,小米商城价格更新,多款主力机型上调300元至500元不等。其中,REDMI Turbo 5...
“真实社交”售卖“优先访问权”... 据了解,购买这项服务的企业能够直接接入“真实社交”数据源,辅以人工智能技术解读信息,进而提前把握市场...
原创 狂... 英伟达正式官宣与 Safe Superintelligence(SSI)达成长期战略合作,总投资规模...
马斯克最新预言来了,钱要没用了... “以法莲是商人,手里有诡诈的天平,爱行欺骗!”——圣经 据红星新闻报道,本月,埃隆·马斯克在接受专...
遭欧盟22国“围攻”,西班牙怒... 西班牙首相桑切斯与22个欧盟成员国领导人激烈交锋后,由轮值主席国爱尔兰正式召集,欧盟将于本周二(8月...