nginx

service服务脚本(nginx)

2021-04-30  本文已影响0人  dark68

Linux服务是可以通过service命令进行控制的,这能使我们在给nginx主进程发送信号以及查看操作nginx服务更加得心应手。在CentOS系统中,Service命令实际是调用/etc/init.d目录下的shell脚本,也就是说,如下两行命令其实等价的

#直接运行脚本
/etc/init.d/network restart

#通过service命令执行脚本
service network restart

在上面的命令中,network是shell脚本的文件名,restart是传递给脚本的参数。因此将nginx添加到系统服务中,只需要在/etc/init.d中编写一个文件名为nginx的shell脚本即可。

接下来执行touch nginx创建一个脚本文件,使用vim /etc/init.d/nginx命令编写一个shell脚本实现nginx服务管理,提供start stop reload restart status 5个参数,具体的脚本代码如下:

#! /bin/bash

#chkconfig:35 85 15

DAEMON=/usr/local/nginx/nginx
PID=/usr/local/nginx/nginx.pid

case "$1" in
  start)
      echo "Starting nginx daemon..."
      $DAEMON && echo "SUCCESS"  #开启nginx
  ;;
  stop)
      echo "Stopping nginx daemon..."
      $DAEMON -s quit && echo "SUCCESS"  #从容的停止nginx
  ;;
  reload)
      echo "Reloading nginx daemon..."
      $DAEMON -s reload && echo "SUCCESS"  #平滑重启nginx
  ;;
  restart)
      echo "Restarting nginx daemon..."
      $DAEMON -s quit                            #从容的停止nginx
      $DAEMON && echo "SUCCESS"                  #开启nginx
  ;;
  status)
      if [ ! -f "$PID" ]; then                  #因为nginx启动后会生成进程文件nginx.pid,这里通过判断进程文件是否存在,判断nginx是否启动
         echo "Nginx is not running..."
      else
         echo "Nginx is running..."
      fi
  ;;
  *)
      echo "Usage:service nginx (start|stop|restart|reload|status)"
      exit 2
  ;;
esac

代码解释:

#! /bin.bash:通常写在shell脚本的开头,需要使用特殊表示符号#!定义解释此脚本的shell路径。以上代码的意思是这个脚本将使用bash环境执行。
case语句:case语句通常用于多重分支语句匹配的情况,具体语法如下:

case $变量名 in
     模式1)
       命令序列1
     ;;
     模式2)
       命令序列2
     ;;
     *)
       默认执行的命令序列
     ;;
esac

case语句必须以case开始 in结尾,中间的变量表示用户输入的字符,每个模式必须以右括号")"结束,双分号";;"结束命令序列,且匹配模式中可以使用方括号表示一个连续的范围,如[0-9],使用树杠符号“|”表示“或”;最后的“*)”是默认模式,当使用前面的各种模式均无法匹配该变量时,将执行“*)”后的命令序列,最后case语句必须以esac结束。
上一篇 下一篇

猜你喜欢

热点阅读