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
目录
相关文章
|
4月前
|
自然语言处理 大数据 应用服务中间件
大数据-172 Elasticsearch 索引操作 与 IK 分词器 自定义停用词 Nginx 服务
大数据-172 Elasticsearch 索引操作 与 IK 分词器 自定义停用词 Nginx 服务
100 5
|
3月前
|
负载均衡 前端开发 JavaScript
Nginx 代理多服务
以上是 Nginx 代理多服务的几种常见方式,在实际应用中,可以根据具体的业务需求和系统架构选择合适的代理方式,并结合其他 Nginx 的功能和配置来优化和完善系统的性能和功能。
|
4月前
|
缓存 负载均衡 应用服务中间件
Nginx 实现一个端口代理多个前后端服务
【10月更文挑战第19天】Nginx 的强大功能不仅限于此,它还可以与其他技术和工具相结合,为我们的应用提供更强大的支持和保障。在不断发展的互联网时代,掌握 Nginx 的使用技巧将为我们的工作和生活带来更多的便利和效益。
|
4月前
|
应用服务中间件 Apache 开发工具
nginx服务企业应用
nginx服务企业应用
|
4月前
|
应用服务中间件 网络安全 nginx
nginx作为web服务以及nginx.conf详解
nginx作为web服务以及nginx.conf详解
|
4月前
|
Kubernetes 应用服务中间件 nginx
k8s基础使用--使用k8s部署nginx服务
本文介绍了Kubernetes中核心概念Deployment、Pod与Service的基本原理及应用。Pod作为最小调度单元,用于管理容器及其共享资源;Deployment则负责控制Pod副本数量,确保其符合预期状态;Service通过标签选择器实现Pod服务的负载均衡与暴露。此外,还提供了具体操作步骤,如通过`kubectl`命令创建Deployment和Service,以及如何验证其功能。实验环境包括一台master节点和两台worker节点,均已部署k8s-1.27。
305 1
|
6月前
|
应用服务中间件 nginx Docker
本地通过域名访问虚拟机上nginx的服务、搭建域名访问环境一(反向代理配置)
这篇文章介绍了如何通过域名在本地访问虚拟机上的nginx服务,包括创建nginx容器、修改配置文件、修改本地host文件以及进行访问测试的详细步骤。文章提供了具体的Docker命令来创建并配置nginx容器,展示了配置文件的修改示例,说明了如何在本地系统的hosts文件中添加虚拟机IP和自定义域名,以及如何通过浏览器进行测试访问。
本地通过域名访问虚拟机上nginx的服务、搭建域名访问环境一(反向代理配置)
|
4月前
|
应用服务中间件 Linux Shell
Linux 配置 Nginx 服务的详细步骤,绝对干货
Linux 配置 Nginx 服务的详细步骤,绝对干货
157 0
|
6月前
|
负载均衡 应用服务中间件 网络安全
Django后端架构开发:Nginx服务优化实践
Django后端架构开发:Nginx服务优化实践
103 2
|
6月前
|
Ubuntu Linux Shell
在Linux中,如何使用shell脚本判断某个服务是否正在运行?
在Linux中,如何使用shell脚本判断某个服务是否正在运行?