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

  • 相关阅读:
    PowerToys插件扩展(类似Alfred)
    .net打独立运行环境遇到无法trim遇到的bug
    blazor wasm开发chrome插件
    将php代码部署到新浪云测试(简单方法,包含数据库的连接)
    python修改csv某一列的内容
    windows10调用libcurl
    Java动态脚本Groovy,高级啊!
    Linux 配置Git
    Java动态脚本Groovy读取配置文件
    Java动态脚本Groovy获取Bean(奇淫技巧操作)
  • 原文地址:https://www.cnblogs.com/XuHoo/p/5888555.html
Copyright © 2011-2022 走看看