开发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服务开机自启脚本管理,重启系统后即可生效。