zoukankan      html  css  js  c++  java
  • 开发nginx启动脚本及开机自启管理(case)

    往往我们在工作中需要自行写一些脚本来管理服务,一旦服务异常或宕机等问题,脚本无法自行管理,当然我们可以写定时任务或将需要管理的脚本加入自启等方法来避免这种尴尬的事情,case适用与写启动脚本,下面给大家带来一个开机自启管理nginx服务,写的不好,望各位大佬指点评价...

    已知nginx常用管理命令为:

    启动:/application/nginx/sbin/nginx

    停止:/application/nginx/sbin/nginx –s stop

    重启:/application/nginx/sbin/nginx –s reload

    用case脚本模拟nginx服务启动关闭:/etc/init.d/nginx {start|stop|restart|reload}并实现可以通过chkconfig管理

    我们先ps –ef|grep nginx查看一下nginx服务状态,也可以进入/application/nginx/logs下有没有nginx.pid

    由此可见当启动nginx服务时,/application/nginx/logs下存在nginx.pid,反之不存在,所有我们可以以此为判断条件编写脚本:

    脚本如下:

     1 [root@bqh-118 scripts]# vim nginx.sh 
     2 #!/bin/sh
     3 #date:2019-04-21
     4 #author:aゞ锦衣卫
     5 #chkconfig:2345 28 62
     6 #script function:Nginx service boot-up self-start script
     7 [ -f /etc/init.d/functions ] && . /etc/init.d/functions   #公共函数,提供基本函数调用
     8 pidfile=/application/nginx/logs/nginx.pid
     9 nginx=/application/nginx/sbin/nginx
    10 SHAN='E[31;5m'
    11 RES='E[0m'
    12 jiance() {                                                #定义jiance判断状态模块
    13         RETVAL=$?
    14         if [ $RETVAL -eq 0 ];then
    15         action "nginx is $1" /bin/true
    16         else
    17         action "nginx is $1" /bin/false
    18         fi
    19 }
    20 Start_nginx() {                                           #定义nginx服务启动模块
    21 if [ -f $pidfile ];then
    22         echo "nginx is runing"
    23     else
    24         $nginx
    25         jiance start
    26 fi
    27         return $RETVAL
    28 }
    29 Stop_nginx() {                                            #定义nginx服务停止模块
    30 if [ ! -f $pidfile ];then
    31         echo "nginx is not runing!"     
    32     else
    33         $nginx -s stop
    34         jiance stop
    35 fi
    36         return $RETVAL
    37 }
    38 Reload_nginx() {                                            #定义nginx服务平滑启动模块
    39 if [ ! -f $pidfile ];then
    40         echo -e "${SHAN}Cat't open $pidfile ,no such file or directory!${RES}"
    41     else
    42         $nginx -s reload
    43         jiance reload
    44         return $RETVAL
    45 fi
    46         return $RETVAL
    47 }
    48 case "$1" in                 #case交互式判断以上获取的值匹配以下哪些条件并给出相应的提示信息
    49         start)
    50           Start_nginx
    51                 RETVAL=$?
    52         ;;
    53         stop)
    54           Stop_nginx
    55                 RETVAL=$?
    56         ;;
    57         restart)
    58           Stop_nginx
    59           sleep 2
    60           Start_nginx
    61                 RETVAL=$?
    62          ;;
    63         reload)
    64           Reload_nginx
    65                 RETVAL=$?
    66         ;;
    67         *)
    68           echo -e "${SHAN}USAGE:$0 {start|stop|reload|restart}${RES}"
    69           exit 1
    70 esac
    71 exit $RETVAL

     执行脚本效果如下:

    测试完脚本没问题,我们就cp到启动文件下并赋予可执行权限:

    cp nginx.sh nginx

    cp nginx /etc/init.d/&&chmod +x /etc/init.d/nginx

    接着我们需要给脚本配置启动顺序,并加入到自启动项去

    将nginx服务添加至自启管理配置中:

    chkconfig –add nginx

    查看该服务进程状态:

    chkconfig –list nginx

    设置启动服务状态:

    chkconfig nginx off  #关闭

    chkconfig nginx on  #启动

    判断下次开机自启顺序方法:

    ok,以上操作完成了nginx服务开机自启脚本管理,重启系统后即可生效。

  • 相关阅读:
    关于transition中嵌套keep-alive的问题解决
    vue-cli中使用全局less变量
    git 移除远程仓库关联
    当浏览器窗口大小发生变化时,重新绘制JsPlumb中的线条、端点
    事件循环详解
    React + Sass
    使用OpenSSL自签发SSL证书,支持chrome识别
    英汉翻译技巧之直译与意译、正说与反说、顺序法和逆序法
    英汉翻译技巧之拆句
    英语翻译时句子成分的转换
  • 原文地址:https://www.cnblogs.com/su-root/p/10745582.html
Copyright © 2011-2022 走看看