• 制作service服务,shell脚本小例子(来自网络)


    事先准备工作:源码安装apache 。安装目录为/usr/local/httpd

    任务需求:
    1、可通过 service httpd start|stop|status|restart 命令对服务进行控制

    2、httpd服务可开机自启动

    思路:
    1、start、stop操作可直接调用源码安装的httpd的控制程序apachectl
    2、在启动服务时,建立httpd.lock文件;停止服务时删除
    3、status操作检测httpd.lock文件是否存在,存在判断服务已启动,不存在表示服务停止
    4、对每个操作建立对应的函数,进行调用
    5、restart操作先调用stop函数,在调用start函数
    6、服务脚本的控制参数通过位置变量 $1 传入,使用case分支进行识别、执行相应的操作
    7、在脚本开头添加chkconfig管理参数,定义哪个运行级别启动、服务启动优先级、服务关闭优先级(让服务开机自启动,必须添加),description服务描述,进程名

    PS:看过系统已有系统服务脚本,发现那些比我写的复杂多了。原谅我刚学shell,第一次写系统服务脚本

    脚本如下:

    #vim /etc/init.d/httpd
    #!bin/bash
    #chkconfig:2345 55 25    //运行级别、启动优先级、关闭优先级
    #processname:httpd        //进程名
    #description:source httpd server daemon  //服务描述
    prog=/usr/local/httpd/bin/apachectl      //控制程序路径
    lock=/usr/local/httpd/httpd.lock        //lock文件路径
    start(){                                //start函数
            $prog start
            echo "正在启动服务...."
            touch $lock
    }
    stop(){                                //stop函数
            $prog stop
            echo "正在停止服务...."
            rm -rf $lock
    }
    status(){                        //status函数
            if [ -e $lock ];then
                echo "$0 服务正在运行"
            else
                echo "$0 服务已经停止"
            fi
    }
    restart(){              //restart函数
            stop
            start          //直接调用stop、start函数,
    }
    case "$1" in        //case分支结构匹配,$1位置参数对控制参数调用
    "start")
            start      //调用start函数
            ;;
    "stop")            //调用stop函数
            stop
            ;;
    "status")            //调用status函数
            status
            ;;
    "restart")            //调用restart函数
            restart
            ;;
    *)                //其他参数就输出脚本正确用法
            echo "用法:$0 start|stop|status|restart"
            ;;
    esac

    验证:
    [root@ndbA /]# service httpd start
    正在启动服务....
    [root@ndbA /]# service httpd status
    /etc/init.d/httpd 服务正在运行
    [root@ndbA /]# service httpd stop 
    正在停止服务....
    [root@ndbA /]# service httpd status
    /etc/init.d/httpd 服务已经停止
    [root@ndbA /]# service httpd stop 
    httpd (no pid file) not running
    正在停止服务....
    [root@ndbA /]# service httpd restatus
    用法:/etc/init.d/httpd start|stop|status|restart
    [root@ndbA /]# service httpd restart
    httpd (no pid file) not running
    正在停止服务....
    正在启动服务....
    [root@ndbA /]#

    [root@ndbA /]# chkconfig --list httpd
    httpd          0:关闭  1:关闭  2:启用  3:启用  4:启用  5:启用  6:关闭
    [root@ndbA /]# chkconfig  httpd off 
    [root@ndbA /]# chkconfig --list httpd
    httpd          0:关闭  1:关闭  2:关闭  3:关闭  4:关闭  5:关闭  6:关闭
    [root@ndbA /]# chkconfig  httpd on
    [root@ndbA /]# chkconfig --list httpd
    httpd          0:关闭  1:关闭  2:启用  3:启用  4:启用  5:启用  6:关闭
    [root@ndbA /]#

    革命尚未成功,同志们仍需努力.
  • 相关阅读:
    python随笔:邮箱题目
    05 小程序自定义组件
    04 小程序常用组件-view text rich-text icon swiger
    03 小程序语法-WXSS样式-尺寸-样式 -选择器
    02 小程序语法-数据绑定与事件绑定
    01 小程序入门与vscode开发加装插件
    JAVA25-Git、Vue.js
    JAVA14-File类、递归、字节流、字符流、缓冲流、转换流、序列化流、Files
    JAVA13-异常、线程、同步、等待与唤醒案例、线程池、Lambda表达式
    JAVA12-Scanner类、Random类、ArrayList类、String类、static、Arrays类、Math类、静态方法
  • 原文地址:https://www.cnblogs.com/qinggege/p/4365509.html
Copyright © 2020-2023  润新知