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
目录
相关文章
|
2天前
|
分布式计算 Hadoop Shell
使用shell脚本实现自动SSH互信功能
使用shell脚本实现自动SSH互信功能
10 1
|
3天前
|
Unix Shell Linux
轻松编写 AIX Shell 脚本
轻松编写 AIX Shell 脚本
11 1
|
4天前
|
监控 关系型数据库 Shell
Shell脚本入门:从基础到实践,轻松掌握Shell编程
Shell脚本入门:从基础到实践,轻松掌握Shell编程
|
4天前
|
关系型数据库 MySQL Shell
在Centos7中利用Shell脚本:实现MySQL的数据备份
在Centos7中利用Shell脚本:实现MySQL的数据备份
|
5天前
|
Shell Linux 编译器
C语言,Linux,静态库编写方法,makefile与shell脚本的关系。
总结:C语言在Linux上编写静态库时,通常会使用Makefile来管理编译和链接过程,以及Shell脚本来自动化构建任务。Makefile包含了编译规则和链接信息,而Shell脚本可以调用Makefile以及其他构建工具来构建项目。这种组合可以大大简化编译和构建过程,使代码更易于维护和分发。
23 5
|
6天前
|
Shell 程序员 数据安全/隐私保护
shell 脚本 if-else判断 和流程控制 (基本语法|基础命令)
shell 脚本 if-else判断 和流程控制 (基本语法|基础命令)
|
6天前
|
存储 Shell C语言
shell脚本 编程 变量 基本入门(详解)
shell脚本 编程 变量 基本入门(详解)
|
6天前
|
Shell Linux 编译器
C语言,Linux,静态库编写方法,makefile与shell脚本的关系。
总结:C语言在Linux上编写静态库时,通常会使用Makefile来管理编译和链接过程,以及Shell脚本来自动化构建任务。Makefile包含了编译规则和链接信息,而Shell脚本可以调用Makefile以及其他构建工具来构建项目。这种组合可以大大简化编译和构建过程,使代码更易于维护和分发。
15 3
|
12天前
|
弹性计算 运维 监控
|
12天前
|
存储 弹性计算 运维
自动化收集员工信息的Shell脚本
【4月更文挑战第30天】
10 0