开发nginx启动脚本及开机自启管理(case)

2024-08-30 14:38

本文主要是介绍开发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/sh3 #date:2019-04-214 #author:aゞ锦衣卫5 #chkconfig:2345 28 626 #script function:Nginx service boot-up self-start script7 [ -f /etc/init.d/functions ] && . /etc/init.d/functions   #公共函数,提供基本函数调用8 pidfile=/application/nginx/logs/nginx.pid9 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服务开机自启脚本管理,重启系统后即可生效。

这篇关于开发nginx启动脚本及开机自启管理(case)的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/1121103

相关文章

SpringBoot启动报错的11个高频问题排查与解决终极指南

《SpringBoot启动报错的11个高频问题排查与解决终极指南》这篇文章主要为大家详细介绍了SpringBoot启动报错的11个高频问题的排查与解决,文中的示例代码讲解详细,感兴趣的小伙伴可以了解一... 目录1. 依赖冲突:NoSuchMethodError 的终极解法2. Bean注入失败:No qu

利用Python开发Markdown表格结构转换为Excel工具

《利用Python开发Markdown表格结构转换为Excel工具》在数据管理和文档编写过程中,我们经常使用Markdown来记录表格数据,但它没有Excel使用方便,所以本文将使用Python编写一... 目录1.完整代码2. 项目概述3. 代码解析3.1 依赖库3.2 GUI 设计3.3 解析 Mark

如何自定义Nginx JSON日志格式配置

《如何自定义NginxJSON日志格式配置》Nginx作为最流行的Web服务器之一,其灵活的日志配置能力允许我们根据需求定制日志格式,本文将详细介绍如何配置Nginx以JSON格式记录访问日志,这种... 目录前言为什么选择jsON格式日志?配置步骤详解1. 安装Nginx服务2. 自定义JSON日志格式各

Nginx指令add_header和proxy_set_header的区别及说明

《Nginx指令add_header和proxy_set_header的区别及说明》:本文主要介绍Nginx指令add_header和proxy_set_header的区别及说明,具有很好的参考价... 目录Nginx指令add_header和proxy_set_header区别如何理解反向代理?proxy

利用Go语言开发文件操作工具轻松处理所有文件

《利用Go语言开发文件操作工具轻松处理所有文件》在后端开发中,文件操作是一个非常常见但又容易出错的场景,本文小编要向大家介绍一个强大的Go语言文件操作工具库,它能帮你轻松处理各种文件操作场景... 目录为什么需要这个工具?核心功能详解1. 文件/目录存javascript在性检查2. 批量创建目录3. 文件

一文带你了解SpringBoot中启动参数的各种用法

《一文带你了解SpringBoot中启动参数的各种用法》在使用SpringBoot开发应用时,我们通常需要根据不同的环境或特定需求调整启动参数,那么,SpringBoot提供了哪些方式来配置这些启动参... 目录一、启动参数的常见传递方式二、通过命令行参数传递启动参数三、使用 application.pro

SpringBoot项目启动报错"找不到或无法加载主类"的解决方法

《SpringBoot项目启动报错找不到或无法加载主类的解决方法》在使用IntelliJIDEA开发基于SpringBoot框架的Java程序时,可能会出现找不到或无法加载主类com.example.... 目录一、问题描述二、排查过程三、解决方案一、问题描述在使用 IntelliJ IDEA 开发基于

nvm如何切换与管理node版本

《nvm如何切换与管理node版本》:本文主要介绍nvm如何切换与管理node版本问题,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录nvm切换与管理node版本nvm安装nvm常用命令总结nvm切换与管理node版本nvm适用于多项目同时开发,然后项目适配no

基于Python开发批量提取Excel图片的小工具

《基于Python开发批量提取Excel图片的小工具》这篇文章主要为大家详细介绍了如何使用Python中的openpyxl库开发一个小工具,可以实现批量提取Excel图片,有需要的小伙伴可以参考一下... 目前有一个需求,就是批量读取当前目录下所有文件夹里的Excel文件,去获取出Excel文件中的图片,并

SQL中的CASE WHEN用法小结

《SQL中的CASEWHEN用法小结》文章详细介绍了SQL中的CASEWHEN函数及其用法,包括简单CASEWHEN和CASEWHEN条件表达式两种形式,并通过多个实际场景展示了如何使用CASEWH... 目录一、简单CASE WHEN函数:二、CASE WHEN条件表达式函数三、常用场景场景1:不同状态展