博客
关于我
shell(十)case的几个典型应用
阅读量:376 次
发布时间:2019-03-05

本文共 3868 字,大约阅读时间需要 12 分钟。

服务启动脚本编写实践

一、服务启动脚本的编写说明

本文将通过case语句,编写不同服务的启动脚本,并集成开机自启功能。以下是具体实现方法。


二、服务启动脚本的案例

1. Nginx服务启动脚本
#!/bin/bash# 定义服务名称和脚本所在目录SERVICENAME="nginx"SCRIPTDIR="/usr/local/lnmp/nginx/sbin"# 检查是否存在关键库文件if [ -f /etc/init.d/functions ]; then    source /etc/init.d/functionsfi# 定义进程判断文件PIDFILE="/usr/local/lnmp/nginx/logs/nginx.pid"# 定义功能模块start_Nginx() {    if [ -f $PIDFILE ]; then        echo "Nginx is running."    else        echo "Nginx is starting."        $SCRIPTDIR/nginx > /dev/null        /bin/true    fi}stop_Nginx() {    if [ -f $PIDFILE ]; then        echo "Nginx is stopping."        $SCRIPTDIR/nginx -s stop > /dev/null        /bin/true    else        echo "Nginx is already stopped."        /bin/true    fi}restart_Nginx() {    if [ -f $PIDFILE ]; then        echo "Nginx is restarting."        $SCRIPTDIR/nginx -s reopen > /dev/null        /bin/true    else        echo "Failed to start Nginx."        /bin/false    fi}reload_Nginx() {    if [ -f $PIDFILE ]; then        echo "Nginx is reloading."        $SCRIPTDIR/nginx -s reload > /dev/null        /bin/true    else        echo "Failed to reload Nginx."        /bin/false    fi}# case语句实现命令解析case $1 in    start)        start_Nginx        RETVAL=$?        ;;    stop)        stop_Nginx        RETVAL=$?        ;;    restart)        restart_Nginx        RETVAL=$?        ;;    reload)        reload_Nginx        RETVAL=$?        ;;    *)        echo "Usage: $0 {start|stop|restart|reload}"        exit 1    ;;esacexit $RETVAL
2. MySQL服务启动脚本
#!/bin/bash# 定义服务名称和脚本所在目录SERVICENAME="mysql"SCRIPTDIR="/usr/local/mysql/bin"# 定义功能模块start_Mysql() {    if [ -f $PIDFILE ]; then        echo "MySQL is running."    else        echo "MySQL is starting."        $SCRIPTDIR/mysql.server start > /dev/null        /bin/true    fi}stop_Mysql() {    if [ -f $PIDFILE ]; then        echo "MySQL is stopping."        $SCRIPTDIR/mysql.server stop > /dev/null        /bin/true    else        echo "MySQL is already stopped."        /bin/true    fi}restart_Mysql() {    if [ -f $PIDFILE ]; then        echo "MySQL is restarting."        $SCRIPTDIR/mysql.server restart > /dev/null        /bin/true    else        echo "Failed to start MySQL."        /bin/false    fi}# case语句实现命令解析case $1 in    start)        start_Mysql        RETVAL=$?        ;;    stop)        stop_Mysql        RETVAL=$?        ;;    restart)        restart_Mysql        RETVAL=$?        ;;    reload)        echo "MySQL does not support reload."        exit 1        ;;    *)        echo "Usage: $0 {start|stop|restart}"        exit 1    ;;esacexit $RETVAL
3. rsync服务启动脚本
#!/bin/bash# 定义服务名称和脚本所在目录SERVICENAME="rsync"SCRIPTDIR="/usr/bin"# 定义功能模块start_Rsync() {    echo "Rsync is starting."    $SCRIPTDIR/rsyncd --daemon > /dev/null    /bin/true}stop_Rsync() {    echo "Rsync is stopping."    $SCRIPTDIR/rsyncd --stop > /dev/null    /bin/true}# case语句实现命令解析case $1 in    start)        start_Rsync        RETVAL=$?        ;;    stop)        stop_Rsync        RETVAL=$?        ;;    *)        echo "Usage: $0 {start|stop}"        exit 1    ;;esacexit $RETVAL

三、服务自启动配置

  • Nginx服务自启动配置

    • 打开终端执行:
      chmod a+x /etc/init.d/nginx
    • 使用chkconfig添加服务:
      chkconfig --add nginxchkconfig --list nginx
    • 设置开机自启动:
      chkconfig nginx on
  • MySQL服务自启动配置

    • 打开终端执行:
      chmod a+x /etc/init.d/mysql
    • 使用chkconfig添加服务:
      chkconfig --add mysqlchkconfig --list mysql
    • 设置开机自启动:
      chkconfig mysql on
  • Rsync服务自启动配置

    • 打开终端执行:
      chmod a+x /etc/init.d/rsync
    • 使用chkconfig添加服务:
      chkconfig --add rsyncchkconfig --list rsync
    • 设置开机自启动:
      chkconfig rsync on

  • 四、运行级别管理

  • 运行级别文件结构

    • 每个服务需要在对应的运行级别文件中添加注释:
      chkconfig: 2345 32 62description: Nginx is a http server!
    • 检查服务状态:
      ll /etc/rc.d/rc3.d/ | grep nginx
  • 启动脚本优先级

    • 优先级越高的启动脚本,越靠前执行:
      ll /etc/rc.d/rc3.d/ | grep 32

  • 五、常用命令

  • Nginx服务管理

    • 查看服务状态:
      chkconfig --list nginx
    • 禁用自启动:
      chkconfig nginx off
  • MySQL服务管理

    • 删除服务:
      chkconfig --del mysql
  • Rsync服务管理

    • 启用服务:
      chkconfig rsync on

  • 通过以上方法,可以轻松编写不同服务的启动关闭脚本,并实现开机自启动功能。

    转载地址:http://lcwwz.baihongyu.com/

    你可能感兴趣的文章
    Mysql学习总结(40)——MySql之Select用法汇总
    查看>>
    Mysql学习总结(41)——MySql数据库基本语句再体会
    查看>>
    Mysql学习总结(42)——MySql常用脚本大全
    查看>>
    Mysql学习总结(43)——MySQL主从复制详细配置
    查看>>
    Mysql学习总结(44)——Linux下如何实现mysql数据库每天自动备份定时备份
    查看>>
    Mysql学习总结(45)——Mysql视图和事务
    查看>>
    Mysql学习总结(46)——8种常被忽视的SQL错误用法
    查看>>
    Mysql学习总结(48)——MySql的日志与备份还原
    查看>>
    Mysql学习总结(49)——从开发规范、选型、拆分到减压
    查看>>
    Mysql学习总结(4)——MySql基础知识、存储引擎与常用数据类型
    查看>>
    Mysql学习总结(50)——Oracle,mysql和SQL Server的区别
    查看>>
    Mysql学习总结(51)——Linux主机Mysql数据库自动备份
    查看>>
    Mysql学习总结(52)——最全面的MySQL 索引详解
    查看>>
    Mysql学习总结(53)——使用MySql开发的Java开发者规范
    查看>>
    Mysql学习总结(54)——MySQL 集群常用的几种高可用架构方案
    查看>>
    Mysql学习总结(55)——MySQL 语句大全再温习
    查看>>
    Mysql学习总结(56)——MySQL用户管理和权限设置
    查看>>
    Mysql学习总结(57)——MySQL查询当天、本周、本月、上周、本周、上月、距离当前现在6个月数据
    查看>>
    Mysql学习总结(58)——深入理解Mysql的四种隔离级别
    查看>>
    Mysql学习总结(59)——数据库分库分表策略总结
    查看>>