zoukankan      html  css  js  c++  java
  • SHELL编写NGINX服务控制脚本

    使用源码包安装的Nginx没办法使用"service nginx start"或"/etc/init.d/nginx start"进行操作和控制,所以写了以下的服务控制脚本。

    可以使用的选项有:

    start     启动

    stop     停止

    reload   重载

    restart    重启

    status    状态

    test    检查配置文件

    1、创建脚本文件并添加执行权限

    # touch /etc/init.d/nginx
    # chmod +x /etc/init.d/nginx

    2、编写脚本内容

    #!/bin/bash
    # chkconfig: - 85 15
    # description: Nginx server control script
    # processname: nginx
    # config file: /usr/local/nginx/conf/nginx.conf
    # pid file: /usr/local/nginx/logs/nginx.pid
    # 
    # eastmoney public tools
    # version: v1.0.0
    # create by XuHoo, 2016-9-14
    # 
    
    # source function library
    . /etc/rc.d/init.d/functions
    
    NGINX_NAME="nginx"
    NGINX_PROG="/usr/local/sbin/nginx"
    NGINX_PID_FILE="/usr/local/nginx/logs/nginx.pid"
    NGINX_CONF_FILE="/usr/local/nginx/conf/nginx.conf"
    NGINX_LOCK_FILE="/var/lock/subsys/nginx.lock"
    
    # check current user
    [ "$USER" != "root" ] && exit 1
    
    start() {
        status
            if [[ $? -eq 0 ]]; then
                echo $"Nginx (PID $(cat $NGINX_PID_FILE)) already started."
                return 1
            fi
        echo -n $"Starting $NGINX_NAME: "
            daemon $NGINX_PROG -c $NGINX_CONF_FILE
            retval=$?
            echo
        [ $retval -eq 0 ] && touch $NGINX_LOCK_FILE
        return $retval
    }
    
    stop() {
        status
            if [[ $? -eq 1 ]]; then
                echo "Nginx server already stopped."
                return 1
            fi
        echo -n $"Stoping $NGINX_NAME: "
            killproc $NGINX_PROG
            retval=$?
            echo
        [ $retval -eq 0 ] && rm -f $NGINX_LOCK_FILE
        return $retval
    }
    
    restart() {
        stop
            sleep 1
        start
        retval=$?
        return $retval
    }
    
    reload() {
        echo -n $"Reloading $NGINX_NAME: "
            killproc $NGINX_PROG -HUP
            retval=$?
            echo
        return $retval
    }
    
    status() {
        netstat -anpt | grep "/nginx" | awk '{print $6}' &> /dev/null
            if [[ $? -eq 0 ]]; then
                if [[ -f $NGINX_LOCK_FILE ]]; then
                    return 0
                else
                    return 1
                fi
            fi
        return 1
    }
    
    _status() {
        status
            if [[ $? -eq 0 ]]; then
                state=`netstat -anpt | grep "/nginx" | awk '{ print $6 }'`
                echo $"Nginx server status is: $state"
            else
                echo "Nginx server is not running"
            fi
    }
    
    test() {
        $NGINX_PROG -t -c $NGINX_CONF_FILE
            retval=$?
        return $retval
    }
    
    case "$1" in
        start)
            start
            ;;
        stop)
            stop
            ;;
        reload)
            reload
            ;;
        restart)
            restart
            ;;
        status)
            _status
            ;;
        test)
            test
            ;;
        *)
            echo "Usage: { start | stop | reload | restart | status | test }"
            exit 1
    esac

    3、将脚本添加到系统服务并设置开机启动

    # chkconfig --add nginx
    # chkconfig --level 3 nginx on

    4、测试脚本是否能够执行

    运行命令: service nginx start 或 /etc/init.d/nginx start

  • 相关阅读:
    osds have slow requests
    supervisor 管理 celery
    guacamole部署
    openstack IPV6
    修复VSAN无法看到主机磁盘
    kolla之docker私有仓库创建
    CSS日食与太阳碰撞
    vue-devtools必备工具
    VUE在BODY上绑定enter事件
    VUE输入框显示时自动聚焦
  • 原文地址:https://www.cnblogs.com/XuHoo/p/5888555.html
Copyright © 2011-2022 走看看