Nginx启动停止脚本

Nginx启动停止脚本

在进行启动Nginx时,需要对其进行检查语法,语法成功则启动Nginx

当Nginx语法检查错误,提示错误的地方,然后进行修复故障。修复成功则继续启动。

[root@shell /scripts]# cat case-4.sh

#!/bin/bash

#1.调用函数库

[ -f /etc/init.d/functions ] && source /etc/init.d/functions

#1.0 加锁机制

Suo=/tmp/nginx.lock

if [ -f $Suo ];then

    echo "此脚本$0 正在运行中,请稍后再执行........."

    exit

fi

#创建锁

touch $Suo &>/dev/null

#2. 判断执行脚本时是否只有一个位置变量

if [ $# -ne 1 ];then

    echo "Usage: $0 {start|stop|status|restart|reload}"

    exit

fi

#3.写case语句变量体

State=$1

Pid_File=/var/run/nginx.pid

case $State in

    start)

            if [ -f $Pid_File ];then

                action "服务Nginx正在运行中................" /bin/true

            else

                /usr/sbin/nginx -t &>/dev/null

                if [ $? -eq 0 ];then

                    /usr/sbin/nginx &>/dev/null && sleep 2

                    if [ $? -eq 0 ];then

                        action "服务Nginx启动成功..............." /bin/true

                    else

                        action "服务Nginx启动失败..............." /bin/false

                    fi

                else

                    /usr/sbin/nginx -t &>/tmp/nginx_err.log

                    Nginx_Err_File=$(awk -F '[ :]' 'NR==1{print $(NF-1)}'  /tmp/nginx_err.log)

                    Nginx_Err_Line=$(awk -F '[ :]' 'NR==1{print $NF}'  /tmp/nginx_err.log)

                    /usr/sbin/nginx -t

                    read -p "Nginx配置文件检查语法失败!配置错误的文件为:${Nginx_Err_File}错误的行为第${Nginx_Err_Line}行,是否需要进行配置修改[Yes|No]:" Qr

                    case $Qr in

                        Yes|Y|y|yes)

                                vim  +$Nginx_Err_Line $Nginx_Err_File

                                /usr/sbin/nginx -t &>/dev/null

                                if [ $? -eq 0 ];then

                                    /usr/sbin/nginx &>/dev/null && sleep 2

                                    if [ $? -eq 0 ];then

                                        action "服务Nginx启动成功..............." /bin/true

                                    else

                                        action "服务Nginx启动失败..............." /bin/false

                                    fi

                                else

                                    echo "Nginx语法检查还是失败!你可以进行选择手动修改!"

                                fi

                                ;;

                        No|N|n|no)

                                echo "你选择了不进行修改!你可以进行手动修改配置文件!"

                                ;;

                        *)

                                echo "你输入的不符合要求!请按照要求输入!"

                    esac

                fi

            fi

            ;;

    stop)

            if [ -f $Pid_File ];then

                /usr/sbin/nginx -s stop &>/dev/null && sleep 2

                if [ $? -eq 0 ];then

                    action "服务Nginx停止成功..............." /bin/true

                else

                    action "服务Nginx停止失败..............." /bin/false

                fi

            else

                action "服务Nginx不在运行中................." /bin/true

            fi

            ;;

    status)

            if [ -f $Pid_File ];then

                action "服务Nginx正在运行中................." /bin/true

            else

                action "服务Nginx不在运行中................." /bin/true

            fi

            ;;

    restart)

            if [ -f $Pid_File ];then

                /usr/sbin/nginx -s stop &>/dev/null && sleep 2

                if [ $? -eq 0 ];then

                    action "服务Nginx停止成功..............." /bin/true

                else

                    action "服务Nginx停止失败..............." /bin/false

                fi

                /usr/sbin/nginx &>/dev/null && sleep 2

                if [ $? -eq 0 ];then                                                                                                                       

                    action "服务Nginx启动成功..............." /bin/true

                else

                    action "服务Nginx启动失败..............." /bin/false

                fi

            else

                action "服务Nginx不在运行中................." /bin/true

                /usr/sbin/nginx &>/dev/null && sleep 2

                if [ $? -eq 0 ];then                                                                                                                       

                    action "服务Nginx启动成功..............." /bin/true

                else

                    action "服务Nginx启动失败..............." /bin/false

                fi

            fi

            ;;

    reload)

            if [ -f $Pid_File ];then

                /usr/sbin/nginx -s reload &>/dev/null && sleep 2

                if [ $? -eq 0 ];then

                    action "服务Nginx平滑重启成功.........." /bin/true

                else

                    action "服务Nginx平滑重启失败.........." /bin/false

                fi

            else

                action "服务Nginx不在运行中,无法进行平滑重启操作......" /bin/false

            fi

            ;;

    *)

            echo "Usage: $0 {start|stop|status|restart|reload}"

            exit

esac

#解锁

rm -f $Suo &>/dev/null

©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。