利用case实现nginx服务启停控制的脚本分析

举报
当她睡着时 发表于 2021/04/10 15:36:22 2021/04/10
【摘要】 作者:当她睡着时系统:CentOS 7               nginx版本:nginx1.16.0明确需求利用shell脚本编程中case判断语句实现nginx服务的状态查询、启动、停止、重启。查询状态:status;启动:start;停止:stop;重启:restart整理思路首先判断nginx的服务状态,实现此步骤可以查pid文件是否存在,若存在即nginx开启,不存在则关闭。N...

作者:当她睡着时

系统:CentOS 7               nginx版本:nginx1.16.0

  • 明确需求

利用shell脚本编程中case判断语句实现nginx服务的状态查询、启动、停止、重启。

查询状态:status;启动:start;停止:stop;重启:restart

  • 整理思路
  1. 首先判断nginx的服务状态,实现此步骤可以查pid文件是否存在,若存在即nginx开启,不存在则关闭。Nginx的pid文件存放路径:/usr/local/nginx/logs/nginx.pid
  2. 开启nginx可以直接执行nginx的文件,即绝对路径下:/usr/local/nginx/sbin/nginx
  3. 关闭nginx可以直接kill nginx的pid号(pid号存在于pid文件中)
  4. 重启nginx则首先关闭nginx,再打开nginx,即先kill nginx的pid号,再执行nginx文件。理清思路,开始实验
  • 编写代码
  1. 此处选择case判断语句,则明确其语法格式:

 

  1. 首先,touch一个nginx.sh的文件,vim打开编辑它。
  2. 肯定要写“魔棒”(幻数)啦,即在首行规定解释器:         #!/bin/bash
  3. 写些注释吧,养成习惯,以后团队协作会很轻松的
  4. 我们把思路中两个文件及路径定义成变量,把nginx的pid文件定义为变量NGINX_PID,把nginx的启动文件定义为变量NGINX_CMD,如下:
  5. NGINX_CMD=/usr/local/nginx/sbin/nginx

NGINX_PID=/usr/local/nginx/logs/nginx.pid

  1. 从头分析语法

         

     其中的变量为可传入变量,我们将其定义为$1

条件为status)

执行代码:判断如果pid文件存在,则nginx开启,否则nginx是关闭的。 if [ -e $NGINX_PID ];then

              echo “nginx已经启动”

       else

              echo  “nginx没有运行”

       fi

;;

以此类推,得到的代码最终为:

case $1 in

         status)

               if [ -e $NGINX_PID ];then

                       echo "nginx已经启动"

               else

                       echo "nginx没有运行"

               fi

;;

         start)

               if [ -e $NGINX_PID ];then

                       echo "nginx已经在运行"

               else    $NGINX_CMD && echo "nginx启动成功" || echo "nginx启动失败"

               fi

;;

         stop)

               if [ -e $NGINX_PID ];then

                    kill $(cat $NGINX_PID) && echo "nginx关闭成功" ||echo "nginx关闭失败"

               else

                       echo "nginx没有启动"

               fi

;;

         restart)

               if [ -e $NGINX_PID ];then

                       $0 stop

                       $0 start

               else

                        echo "nginx没有启动"

                        $0 start

               fi

;;

         *)

              echo "请输入start|stop|restart|status"

esac

 

  • 启动测试
  1. sh文件一个执行权限:chmod +x nginx.sh
  2. 具体操作如下(因我给文件的命名是sh,所以我在此处执行都是third.sh,并不影响,大家将其换为你规定的名字即可)

 

  1. 测试没问题后,我们将其放在/etc/init.d下并命名为nginx,以我为例:mv third.sh /etc/init.d/nginx
  2. 直接执行/etc/init.d/nginx status|start|stop|restart
【版权声明】本文为华为云社区用户原创内容,转载时必须标注文章的来源(华为云社区)、文章链接、文章作者等基本信息, 否则作者和本社区有权追究责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。