歡迎來到Linux教程網
Linux教程網
Linux教程網
Linux教程網
Linux教程網 >> Linux綜合 >> 學習Linux >> SHELL編寫NGINX服務控制腳本,shell編寫nginx腳本

SHELL編寫NGINX服務控制腳本,shell編寫nginx腳本

日期:2017/3/3 18:11:51   编辑:學習Linux

SHELL編寫NGINX服務控制腳本,shell編寫nginx腳本

SHELL編寫NGINX服務控制腳本,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

http://xxxxxx/Linuxjc/1159968.html TechArticle

Copyright © Linux教程網 All Rights Reserved