Shell实现简单的管理Nginx服务启动脚本,简单脚本


实现的功能

一:Nginx启动自检功能
二:自检报错,自动进入所在文件的所在行,让运维人员进行修改!
三:文件锁功能使得该脚本只能让系统管理员执行,并保证不能同时执行多次!
四:可适用较好,实现简单的start,status,restart,reload,stop等功能!

脚本的缺点

一:未引用方法,使得该脚本许多地方重复步骤较多!
二:文件路径变量设置不是很全面!

#!/bin/sh
[ -f /etc/init.d/functions ] && . /etc/init.d/functions
Err=/scripts/nginx-log.txt
Line=`awk -F"[ :]" 'NR==1{print $(NF)}' $Err`
File_Name=`awk -F"[ :]" 'NR==1{print $(NF-1)}' $Err`
File=/var/run/nginx.pid
if [ ! $USER == "root" -a $UID -eq 0 ];then
        action "用户$USER 对该脚本没有使用权限!" /bin/false
        exit
fi
#文件锁
Socket=/scripts/file-socket.txt
if [ -f $Socket ];then
        action "已经有人在运行次脚本,该脚本不能同时运行多个!"
        exit
fi
if [ $# -ne 1 ];then
        action "请输入(start|stop|restart|status|reload)中的一种!" /bin/true
        exit
fi
touch $Socket &>/dev/null
case $1 in
        start)
                if [ -f $File ];then
                        action "nginx 服务已经在运行中。。。。" /bin/true
                else
                        /usr/sbin/nginx -t  &>/dev/null
                        if [ $? -eq 0 ];then
                                /usr/sbin/nginx &>/dev/null
                                if [ $? -eq 0 ];then
                                        action "Nginx启动成功!" /bin/true
                                else
                                        action "Nginx启动失败!" /bin/false
                                fi
                        else
                                /usr/sbin/nginx -t &>$Err
                                action "启动nginx时在文件$File_Name 的第$Line 行出现错误!" /bin/false
                                read -p "是否进入nginx配置文件并修改" change
                                case $change in
                                        Y|YES|y|yes)
                                                vim +$Line /etc/nginx/nginx.conf
                                                /usr/sbin/nginx -t  &>/dev/null
                                                        if [ $? -eq 0 ];then
                                                                /usr/sbin/nginx &>/dev/null
                                                                if [ $? -eq 0 ];then
                                                                        action "Nginx启动成功!" /bin/true
                                                                else
                                                                        action "Nginx启动失败!" /bin/false
                                                                fi
                                                        else
                                                                action "修改失败,语法还是错误!" /bin/false
                                                        fi
                                        ;;
                                        N|NO|n|no)
                                                action "已放弃修改!" /bin/true
                                        ;;
                                        *)
                                                action "请输入n|N|no|NO|YES|Y|y 中的一种!" /bin/false
                                esac
                        fi
                fi
        ;;
        stop)
                if [ -f $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
        ;;
        reload)
                if [ -f $File ];then
                /usr/sbin/nginx -t &>/dev/null
                        if [ $? -eq 0 ];then
                                /usr/sbin/nginx -s reload &>/dev/null
                                if [ $? -eq 0 ];then
                                        action "Nginx加载成功!" /bin/true
                                else
                                        action "Nginx加载失败!" /bin/false
                                fi
                        else
                                /usr/sbin/nginx -t &>$Err
                                action "启动nginx时在文件$File_Name 的第$Line 行出现错误!" /bin/false
                                read -p "是否进入配置文件进行修改?" change1
                                case $change1 in
                                        Y|y|yes|YES)
                                                vim +$Line /etc/nginx/nginx.conf
                                                /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
                                                                action "修改失败,语法还是错误!" /bin/false
                                                        fi
                                                ;;
                                        N|n|no|NO)
                                                action "已放弃修改!" /bin/true
                                                ;;
                                        *)
                                                action "请输入n|N|no|NO|YES|Y|y 中的一种!" /bin/false
                                esac

                        fi
                else
                        action "Nginx未启动!" /bin/false
                fi
        ;;
        restart)
                if [ -f $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 -t &>/dev/null
                        if [ $? -eq 0 ];then
                                /usr/sbin/nginx &>/dev/null
                                sleep 2
                                if [ $? -eq 0 ];then
                                        action "重启成功" /bin/true
                                else
                                        action "重启失败!" /bin/false
                                fi
                        else
                                /usr/sbin/nginx -t &>$Err
                                action "启动nginx时在文件$File_Name 的第$Line 行出现错误!" /bin/false
                                read -p "是否进入配置文件进行修改?" change2
                                case $change2 in
                                        y|Y|YES|yes)
                                                vim +$Line /etc/nginx/nginx.conf
                                                /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
                                                                action "修改失败,语法还是错误!" /bin/false
                                                        fi
                                                ;;
                                        N|NO|n|no)
                                                action "已放弃修改!" /bin/true
                                                ;;
                                        *)
                                                action "请输入n|N|no|NO|YES|Y|y 中的一种!" /bin/false
                                esac
                        fi

                        #/usr/sbin/nginx &>/dev/null
                        #if [ $? -eq 0 ];then
                        #       action "Nginx重启成功!" /bin/true
                        #else
                        #       action "Nginx重启失败!" /bin/false
                        #fi
                else
                        action "Nginx未启动!" /bin/false
                        /usr/sbin/nginx -t &>/dev/null
                        if [ $? -eq 0 ];then
                                /usr/sbin/nginx &>/dev/null
                                sleep 2
                                if [];then
                                        action "nginx重启成功!" /bin/true
                                else
                                        action "nginx重启失败!" /bin/false
                                fi
                        else
                                /usr/sbin/nginx -t &>$Err
                                action "启动nginx时在文件$File_Name 的第$Line 行出现错误!" /bin/false
                                read -p "是否进入配置文件进行修改?" change3
                                case $change3 in
                                        y|Y|YES|yes)
                                                vim +$Line /etc/nginx/nginx.conf
                                                /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
                                                                action "修改失败,语法还是错误!" /bin/false
                                                        fi
                                                ;;
                                        N|NO|n|no)
                                                action "已放弃修改!" /bin/true
                                                ;;
                                        *)
                                                action "请输入n|N|no|NO|YES|Y|y 中的一种!" /bin/false
                                esac
                        fi
                        #/usr/sbin/nginx &>/dev/null
                        #if [ $? -eq 0 ];then
                        #       action "Nginx重启成功!" /bin/true
                        #else
                        #       action "Nginx重启失败!" /bin/false
                        #fi
                fi
        ;;
        status)
                if [ -f $File ];then
                        action "Nginx正在运行!" /bin/true
                else
                        action "Nginx为正常运行!" /bin/true
                fi
        ;;
        *)
                action "Please input: (start|stop|restart|status|reload)" /bin/true
esac
rm -rf $Socket &>/dev/null

相关内容