开发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,反之不存在,所有我们可以以此为判断条件编写脚本:
脚本如下:
[root@bqh-118 scripts]# vim nginx.sh
#!/bin/sh
#date:2019-04-21
#author:aゞ锦衣卫
#chkconfig:2345 28 62
#script function:Nginx service boot-up self-start script
[ -f /etc/init.d/functions ] && . /etc/init.d/functions #公共函数,提供基本函数调用
pidfile=/application/nginx/logs/nginx.pid
nginx=/application/nginx/sbin/nginx
SHAN='\E[31;5m'
RES='\E[0m'
jiance() { #定义jiance判断状态模块
RETVAL=$?
if [ $RETVAL -eq 0 ];then
action "nginx is $1" /bin/true
else
action "nginx is $1" /bin/false
fi
}
Start_nginx() { #定义nginx服务启动模块
if [ -f $pidfile ];then
echo "nginx is runing"
else
$nginx
jiance start
fi
return $RETVAL
}
Stop_nginx() { #定义nginx服务停止模块
if [ ! -f $pidfile ];then
echo "nginx is not runing!"
else
$nginx -s stop
jiance stop
fi
return $RETVAL
}
Reload_nginx() { #定义nginx服务平滑启动模块
if [ ! -f $pidfile ];then
echo -e "${SHAN}Cat't open $pidfile ,no such file or directory!${RES}"
else
$nginx -s reload
jiance reload
return $RETVAL
fi
return $RETVAL
}
case "$1" in #case交互式判断以上获取的值匹配以下哪些条件并给出相应的提示信息
start)
Start_nginx
RETVAL=$?
;;
stop)
Stop_nginx
RETVAL=$?
;;
restart)
Stop_nginx
sleep 2
Start_nginx
RETVAL=$?
;;
reload)
Reload_nginx
RETVAL=$?
;;
*)
echo -e "${SHAN}USAGE:$0 {start|stop|reload|restart}${RES}"
exit 1
esac
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)的更多相关文章
- Nginx 启动脚本
Nginx 启动脚本 1.vim /etc/init.d/nginx #!/bin/bash # chkconfig: - 30 21 # description: http service. # S ...
- centos LNMP第一部分环境搭建 LAMP LNMP安装先后顺序 php安装 安装nginx 编写nginx启动脚本 懒汉模式 mv /usr/php/{p.conf.default,p.conf} php运行方式SAPI介绍 第二十三节课
centos LNMP第一部分环境搭建 LAMP安装先后顺序 LNMP安装先后顺序 php安装 安装nginx 编写nginx启动脚本 懒汉模式 mv /usr/local/php/{ ...
- LNMP 1.4 nginx启动脚本和配置文件
编写Nginx启动脚本,写入下面这段,授权755 vim /etc/init.d/nginx #!/bin/bash # chkconfig: - # description: http servic ...
- nginx启动脚本和配置文件
1.编写Nginx启动脚本,并加入系统服务 vim /etc/init.d/nginx并在其中写入如下内容:#!/bin/bash# chkconfig: - 30 21# description: ...
- linux nginx 启动脚本
linux nginx 启动脚本 [root@webtest76 ~]# vi /etc/init.d/nginx #!/bin/bash # nginx Startup script for the ...
- Nginx 启动脚本/重启脚本
第一步先运行命令关闭nginx sudo kill `cat /usr/local/nginx/logs/nginx.pid` 第二步 vi /etc/init.d/nginx 输入以下内容 #!/b ...
- nginx启动脚本,手动编辑
nginx启动脚本,手动编辑 #! /bin/bash # chkconfig: - # description: nginx service XDIR=/www/server/nginx DESC= ...
- 开发rsync启动脚本2
使用函数更加规范的开发rsync启动脚本 #!/bin/bash #chkconfig: #description: create by vincen . /etc/init.d/functions ...
- shell脚本之nginx启动脚本、统计日志字段、for循环实战、跳板机
1.NGINX启动脚本 #!/bin/bash # chkconfig: 235 32 62 # description: nginx [ -f /etc/init.d/functions ] &am ...
随机推荐
- 【详解JavaScript系列】JavaScript之流程语句
一 开篇概述 本讲主要讲解JavaScript流程语句,其大致内容包括如下: 其中,常用的if,while,do..while,for在本片文章就不论述,重点论述for..in..,label,bre ...
- MySQL中间件之ProxySQL(4):多层配置系统
返回ProxySQL系列文章:http://www.cnblogs.com/f-ck-need-u/p/7586194.html 1.ProxySQL中的库 使用ProxySQL的Admin管理接口连 ...
- MySQL中间件之ProxySQL(11):链式规则( flagIN 和 flagOUT )
返回ProxySQL系列文章:http://www.cnblogs.com/f-ck-need-u/p/7586194.html 1.理解链式规则 在mysql_query_rules表中,有两个特殊 ...
- Go基础系列:构建go程序
hello world 从一个简单的程序开始解释,将下面的内容放进test.go文件中,路径随意: package main import ( "fmt" ) func main( ...
- Java之判断大整数是否为平方数
在本篇博客中,我们将讨论如何使用有效的算法来判断一个大整数是否为平方数. 给定正整数\(n\),如果存在一个整数\(m\),满足\(m^{2}=n\),那么则称\(n\)为平方数.因此,判断一 ...
- springMVC_07乱码及restful风格
乱码的解决 通过过滤器解决乱码问题:CharacterEncodingFilter 配置web.xml文件 <filter> <filter-name>encoding< ...
- 【Java每日一题】20170216
20170215问题解析请点击今日问题下方的“[Java每日一题]20170216”查看(问题解析在公众号首发,公众号ID:weknow619) package Feb2017; public cla ...
- Java IO(2)阻塞式输入输出(BIO)
在上文中<Java IO(1)基础知识——字节与字符>了解到了什么是字节和字符,主要是为了对Java IO中有关字节流和字符流有一个更好的了解. 本文所述的输出输出指的是Java中传统的I ...
- eclipse编写js代码没有提示
安装插件 点击Help,选择Eclipse Marketplace... 搜索js,安装AngularJS Eclipse 重启eclipse,右键项目,选择Configure(配置),选择Conve ...
- Spring Cloud 研发框架demo
第一步:准备工作 1.下载并集成公司自定义maven maven包见QQ群文件 2.克隆Git源码到本地eclipse: xx 3.构建项目 一键初始化parent:run as maven inst ...