往往我们在工作中需要自行写一些脚本来管理服务,一旦服务异常或宕机等问题,脚本无法自行管理,当然我们可以写定时任务或将需要管理的脚本加入自启等方法来避免这种尴尬的事情,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)的更多相关文章

  1. Nginx 启动脚本

    Nginx 启动脚本 1.vim /etc/init.d/nginx #!/bin/bash # chkconfig: - 30 21 # description: http service. # S ...

  2. 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/{ ...

  3. LNMP 1.4 nginx启动脚本和配置文件

    编写Nginx启动脚本,写入下面这段,授权755 vim /etc/init.d/nginx #!/bin/bash # chkconfig: - # description: http servic ...

  4. nginx启动脚本和配置文件

    1.编写Nginx启动脚本,并加入系统服务 vim /etc/init.d/nginx并在其中写入如下内容:#!/bin/bash# chkconfig: - 30 21# description: ...

  5. linux nginx 启动脚本

    linux nginx 启动脚本 [root@webtest76 ~]# vi /etc/init.d/nginx #!/bin/bash # nginx Startup script for the ...

  6. Nginx 启动脚本/重启脚本

    第一步先运行命令关闭nginx sudo kill `cat /usr/local/nginx/logs/nginx.pid` 第二步 vi /etc/init.d/nginx 输入以下内容 #!/b ...

  7. nginx启动脚本,手动编辑

    nginx启动脚本,手动编辑 #! /bin/bash # chkconfig: - # description: nginx service XDIR=/www/server/nginx DESC= ...

  8. 开发rsync启动脚本2

    使用函数更加规范的开发rsync启动脚本 #!/bin/bash #chkconfig: #description: create by vincen . /etc/init.d/functions ...

  9. shell脚本之nginx启动脚本、统计日志字段、for循环实战、跳板机

    1.NGINX启动脚本 #!/bin/bash # chkconfig: 235 32 62 # description: nginx [ -f /etc/init.d/functions ] &am ...

随机推荐

  1. kubernetes 安装kong、kong-ingress-controlor

    一.关于kong的详细内容这里不再赘述,可以查看官网. kong升级到1.0以后功能越来越完善,并切新版本的kong可以作为service-mesh使用,并可以将其作为kubernetes的ingre ...

  2. 动态代理实现AOP

    代理 代理顾名思义:代为处理.不是对目标对象的直接操作,而是通过代理对目标对象进行包装,此时可以在目标对象的基础上添加额外的操作以满足业务需求.图示 分类:动态代理.静态代理. 代理三要素:共同接口. ...

  3. 【Vue.js】vue项目目录作用

    1. build文件夹:打包配置的文件夹 1.1  webpack.base.conf.js :打包的核心配置 1.2  build.js:构建生产版本,项目开发完成之后,通过build.js打包(加 ...

  4. Jenkins入门之执行定时任务

    通过前面我们讲解了如何通过Jenkins执行windows command,powershell脚本,此时我们便可以开始完成一些简单任务了,然而可能看到我们都是通过手动按下Build Now按钮来执行 ...

  5. Python和Java编程题(六)

    1.题目:猴子吃桃问题:猴子第一天摘下若干个桃子,当即吃了一半,还不瘾,又多吃了一个 第二天早上又将剩下的桃子吃掉一半,又多吃了一个.以后每天早上都吃了前一天剩下的一半零一个.到第10天早上想再吃时, ...

  6. sharding:谁都能读懂的分库、分表、分区

    本文通过大量图片来分析和描述分库.分表以及数据库分区是怎样进行的. 1.sharding前的初始数据分布 在本文中,我打算用高考考生相关信息作为实验数据.请无视表的字段是否符合现实,也请无视表的设计是 ...

  7. Linux命令-用户及权限管理

    一.权限管理linux系统中对文件权限的描述机制: u g od r w x r w x r - x (r读,w写,x执行)文件 所有者 所属组 其他人可以表示为二进制: 111 111 101也可以 ...

  8. golang高性能RPC:Apache Thrift安装使用完全攻略

    在企业应用中RPC的使用可以说是十分的广泛,使用该技术可以方便的与各种程序交互而不用考虑其编写使用的语言. 如果你对RPC的概念还不太清楚,可以点击这里. 现今市面上已经有许多应用广泛的RPC框架,比 ...

  9. HTTP状态码以及其含义大全

    HTTP状态码(英语:HTTP Status Code)是用以表示网页服务器超文本传输协议响应状态的3位数字代码.我们在开发过程中比较常见的状态码有:200(请求成功).301(页面重定向).404( ...

  10. .Net C#域账号登陆验证

    //获取登陆页输入的域账号.密码 string domainIP = ""; //域IP string userAccount = ""; //域账号 stri ...