nginx启停脚本
安装nginx时,源码包中未带官方的启动脚本,也就无法使用service nginxd start这种启动方式,查了下资料自己写了一个:
#!/bin/bash #@version: 0.0.
#@author: lifafu
#@file:
#@time: // :
#@company: source /etc/profile #加载系统环境变量
source $HOME/.bash_profile #加载用户环境变量
#set -o nounset #引用未初始化变量时终止执行,也可以set -u
#set -o errexit #执行任何语句返回非0状态时终止执行,也可以set -e # chkconfig: -
# 虽然前面带#号,是注释,但要用chkconfig命令注册开机启动服务器的话,该句必不可少,格式也不能错!
# 3个chkconfig参数的含义:
# x:是指定该脚本在哪个系统启动级别下运行,比如你需要在3,,5上运行,那么第二位就设置成345,我这里用的是”-”,代表在2,,,5上都运行
# y:系统启动时,服务启动顺序,需要注意的是,有的程序依赖与别的程序的话,启动顺序就要注意了,比如A程序的启动依赖于B程序的启动,那么A程序的这个值一定要比B程序大
# z:系统终止时,服务终止顺序 # description: Nginx is a high-performance web and proxy server.
# 该句也必不可少,理由同上,你程序的描述和简介,而非本启动脚本 #设置变量
nginxd=/usr/local/nginx/sbin/nginx
nginx_config=/usr/local/nginx/conf/nginx.conf
nginx_pid=/usr/local/nginx/logs/nginx.pid
nginx_lock=/var/lock/subsys/nginx #保存退出状态的变量,初始值为0(在linux一般0表示成功,表示OK,非0表示异常,不OK)
RETYAL= # 设置程序名称
prog="nginx" # Source function library.在当前shell中运行的函数库文件
# 在functions中定义了很多函数,在这里可以调用,系统提供的函数文件,这里面实现了很多函数和环境变量,比如start的时候,红色的字显示OK就是这个文件的功劳
. /etc/rc.d/init.d/functions # Source network configuration.加载网络配置
. /etc/sysconfig/network # Check that networking is up.
[ ${NETWORKING} = "no" ] && exit # 定义启动函数
start() {
# 判断程序是否存在,否则异常退出
[ -x $nginxd ] || { echo “FATAL: No such programme”;exit ; } # 判断配置文件是否存在,否则异常退出
[ -f $nginx_config ] || { echo “FATAL:Config file does not exist”;exit ; } # 判断程序是否运行,否则异常退出
if [ -e $nginx_pid ];then
echo "nginx already running...."
exit
fi # 判断lock文件是否存在,否则异常退出
if [ -e $nginx_lock ];then
echo "nginx lock file does exist...."
exit
fi # 显示信息,依赖于. /etc/rc.d/init.d/functions
echo -n $"Starting $prog:" # 创建pid文件夹
dir=$(dirname $nginx_pid)
[ -d $dir ] || mkdir -p $dir # 调用functions里的daemon函数来启动nginx,daemon()函数主要用于希望脱离控制台,以守护进程形式在后台运行的程序
daemon --pidfile $nginx_pid $nginxd -c ${nginx_config} # 把daemon函数调用的结果保存到RETVAL里
RETVAL=$?
echo # 判断RETVALR值,如果是0执行成功,则生成锁文件,锁文件主要用来判断程序是否运行
[ $RETVAL = ] && touch $nginx_lock #终止函数,并返回$RETVAL的值,通常用于函数的结束, 本身这段代码也是个函数,所以我们也要返回,返回RETVAL的值
return $RETVAL
} # 定义停止函数
stop() {
echo -n $"Stoping $prog:" #killproc也在. /etc/rc.d/init.d/functions里面定义
killproc -p $nginx_pid $prog
RETVAL=$?
echo
[ $RETVAL = ] && rm -f $nginx_lock $nginx_pid
} reload() {
echo -n $"Reloading $prog:"
#kill -HUP `cat ${nginx_pid}`
killproc -p $nginx_pid $prog -HUP
RETVAL=$?
echo
} #See how we were called.
case "$1" in
start)
start
;;
stop)
stop
;;
reload)
reload
;;
restart)
stop
start
;;
#status在. /etc/rc.d/init.d/functions里有定义
status)
status $prog
RETVAL=$?
;;
#输入其他内容提示以下内容
*)
echo $"Usage:$prog{start|stop|restart|reload|status|help}"
exit
esac
exit $RETVAL
保存为nginxd,复制到/etc/init.d/中并赋予执行权限就可以使用service nginxd start等命令了;
如果需要加入开机启动:chkconfig --add nginxd;chkconfig nginxd on;
启停程序也可以使用类似的方式自己编写启动脚本,不过这种方式还是有缺陷,就是必须使用root用户运行这类脚本。
nginx启停脚本的更多相关文章
- Linux 程序启停脚本
start.sh #!/bin/sh java -jar ./program.jar & echo $! > /var/run/program.pid stop.sh #!/bin/sh ...
- linux下的启停脚本
linux下的根据项目名称,进行进程的启停脚本 #!/bin/bash JAVA=/usr/bin/java APP_HOME=/opt/program/qa/wechat APP_NAME=prog ...
- nginx 启停命令
nginx 启停配置 #!/bin/sh # # nginx Startup script for nginx # # chkconfig: - 85 15 # processname: nginx ...
- case编写的httpd简单启停脚本
case编写的httpd简单启停脚本 #!/bin/bash HTTPD="/etc/init.d/httpd" . /etc/init.d/functions case &quo ...
- Oracle EBS R12的启停脚本
以下脚本用root用户登录执行: 一.DB启停使用EBS提供的脚本ebs_start.shsu - oraprod -c "/d01/oracle/PROD/db/tech_st/10.2. ...
- Oracle BIEE启停脚本
作为BI的开发人员,经常启停BI服务在所难免,启动的过程又比较长,命令需要不同目录切换,简直烦死人呢, 特意整理了linux中的启动脚本,将以下脚本存成biee.sh,后面的过程就相当简单了, 启动: ...
- python启停脚本的编写
先占个位置,打算记录一下启停python 的脚本start.sh,stop.sh的写法. 内容包括启动python脚本的方式,日志的重定向,获取进程id,以及杀掉进程. 参考文章: http://bl ...
- mysql自己编写启停脚本
一.场景 在实际生产环境中要求相对较高的企业对于root权限管控相对比较高,故而很多软件并非安装在root用户下(当然root用户权限也可管理,但正常情况下root权限并不会给业务使用方,而会给一个普 ...
- liunx weblogic服务启停脚本
#!/bin/bash #sh xx.sh start xx项目 例如:sh autoWeblogic.sh start bius #经测试发现weblogic 启动大概需要完全启动成功35秒左右 停 ...
随机推荐
- 【Redis】分布式锁RedLock
普通实现 说道Redis分布式锁大部分人都会想到: 1.setnx+lua, 2.setkey value px milliseconds nx. - 获取锁(unique_value可以是UUID等 ...
- 简单的使用Qt的QCustomplot画图
一.新建一个widget工程 二.将Qcustomplot文件复制到项目下 三.右键qt项目增加已存在的文件 四.在.pro中添加 QT += widgets printsupport 五.在.h中添 ...
- luoguP1290 欧几里德的游戏 [博弈论]
题目描述 欧几里德的两个后代Stan和Ollie正在玩一种数字游戏,这个游戏是他们的祖先欧几里德发明的.给定两个正整数M和N,从Stan开始,从其中较大的一个数,减去较小的数的正整数倍,当然,得到的数 ...
- jmeter测试之-脚本制作
一.脚本录制 1.遇见的问题,回放的时候总是登录失败 解决方式:设置HTTP请求为—跟随重定向 2.新增一个用户的时候,脚本参数里面输入汉字,在浏览器查看的时候显示问号 解决方式:脚本编码方式增加u ...
- ASP.NET Core学习——3
中间件 中间件是用于组成应用程序管道来处理请求和相应的组件.管道内的每一个组件都可以选择是否将请求交给下一个组件,并在管道中调用下一个组件之前和之后执行某些操作.请求委托被用来建立请求管道,请求委托处 ...
- ASP.NET Core学习——2
Application Startup ASP.NET Core为应用程序提供了处理每个请求的完整控制.Startup类是应用程程的入口(entry point),这个类可以设置配置(configur ...
- 资源-.Net-ASP.NET:ASP.NET资源列表
ylbtech-资源-.Net-ASP.NET:ASP.NET资源列表 ASP.NETFree. Cross-platform. Open source.A framework for buildin ...
- 京东云Ubuntu下安装mysql
1.sudo apt-get install mysql-server,输入y后输入密码 2.sudo apt isntall mysql-client 3.sudo apt install libm ...
- PAT_A1130#Infix Expression
Source: PAT A1130 Infix Expression (25 分) Description: Given a syntax tree (binary), you are suppose ...
- 拾遗:Go 单元测试
概念 回归测试:是指修改了旧代码之后,重新进行测试,以确保修改没有引入新的错误或导致其它代码产生错误: 单元测试:是指对软件中的最小可测试单元(单个函数或类)进行检查和验证 Test-Driven D ...