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

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

实现的功能

一: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
目录
相关文章
|
16天前
|
Shell
Shell脚本有哪些基本语法?
【9月更文挑战第4天】
37 17
|
16天前
|
存储 Unix Shell
shell脚本编程基础
【9月更文挑战第4天】
32 12
|
15天前
|
网络协议 关系型数据库 MySQL
Shell 脚本案例
Shell 脚本案例
28 8
|
15天前
|
Shell Linux 开发工具
linux shell 脚本调试技巧
【9月更文挑战第3天】在Linux中调试shell脚本可采用多种技巧:使用`-x`选项显示每行命令及变量扩展情况;通过`read`或`trap`设置断点;利用`echo`检查变量值,`set`显示所有变量;检查退出状态码 `$?` 进行错误处理;使用`bashdb`等调试工具实现更复杂调试功能。
|
25天前
|
负载均衡 应用服务中间件 网络安全
Django后端架构开发:Nginx服务优化实践
Django后端架构开发:Nginx服务优化实践
36 2
|
20天前
|
运维 监控 Shell
自动化运维之宝:编写高效的Shell脚本
【8月更文挑战第31天】在运维的世界里,Shell脚本是一把瑞士军刀,它让日常任务变得简单而高效。本文将通过浅显易懂的语言和实际案例,带你领略Shell脚本的魅力,并教你如何打造属于自己的自动化工具箱。无论你是初学者还是资深运维,这篇文章都将为你打开一扇窗,让你看到不一样的风景。让我们一起探索Shell脚本的世界吧!
|
22天前
|
安全 JavaScript 前端开发
Nginx服务扫描漏洞修复
Nginx服务扫描漏洞修复
|
28天前
|
存储 Shell 数据安全/隐私保护
minio一键安装脚本分享(shell和python)
minio一键安装脚本分享(shell和python)
40 0
|
28天前
|
关系型数据库 Shell 数据库
postgres14一键安装脚本分享(shell和python)
postgres14一键安装脚本分享(shell和python)
21 0
|
28天前
|
监控 Shell Linux
在Linux中,如何使用shell脚本检测磁盘使用率?
在Linux中,如何使用shell脚本检测磁盘使用率?