安装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启停脚本的更多相关文章

  1. Linux 程序启停脚本

    start.sh #!/bin/sh java -jar ./program.jar & echo $! > /var/run/program.pid stop.sh #!/bin/sh ...

  2. linux下的启停脚本

    linux下的根据项目名称,进行进程的启停脚本 #!/bin/bash JAVA=/usr/bin/java APP_HOME=/opt/program/qa/wechat APP_NAME=prog ...

  3. nginx 启停命令

    nginx 启停配置 #!/bin/sh # # nginx Startup script for nginx # # chkconfig: - 85 15 # processname: nginx ...

  4. case编写的httpd简单启停脚本

    case编写的httpd简单启停脚本 #!/bin/bash HTTPD="/etc/init.d/httpd" . /etc/init.d/functions case &quo ...

  5. Oracle EBS R12的启停脚本

    以下脚本用root用户登录执行: 一.DB启停使用EBS提供的脚本ebs_start.shsu - oraprod -c "/d01/oracle/PROD/db/tech_st/10.2. ...

  6. Oracle BIEE启停脚本

    作为BI的开发人员,经常启停BI服务在所难免,启动的过程又比较长,命令需要不同目录切换,简直烦死人呢, 特意整理了linux中的启动脚本,将以下脚本存成biee.sh,后面的过程就相当简单了, 启动: ...

  7. python启停脚本的编写

    先占个位置,打算记录一下启停python 的脚本start.sh,stop.sh的写法. 内容包括启动python脚本的方式,日志的重定向,获取进程id,以及杀掉进程. 参考文章: http://bl ...

  8. mysql自己编写启停脚本

    一.场景 在实际生产环境中要求相对较高的企业对于root权限管控相对比较高,故而很多软件并非安装在root用户下(当然root用户权限也可管理,但正常情况下root权限并不会给业务使用方,而会给一个普 ...

  9. liunx weblogic服务启停脚本

    #!/bin/bash #sh xx.sh start xx项目 例如:sh autoWeblogic.sh start bius #经测试发现weblogic 启动大概需要完全启动成功35秒左右 停 ...

随机推荐

  1. python3 获取电脑磁盘、CPU、内存使用情况

    import psutil # cd C:\Python36-32\Scripts pip install psutil # 获取本机磁盘使用率和剩余空间G信息 def get_disk_info() ...

  2. go声明和初始化

    go声明和初始化 当我们第一次看见变量和声明时,我们仅仅看见一些内置的类型,比如整型和字符串.现在我们将学习结构体,并且我们会深入学习包括指针的内容. 通过一种最简单的方式去创建一个结构体值类型: g ...

  3. 数学二分——cf700A

    二分答案 #include<bits/stdc++.h> using namespace std; #define ll long long int n,l,v1,v2,k; double ...

  4. &#65279; 导致页面顶部空白一行

    模板文件生成html文件以后会在页面body开头处生成可见的控制符 导致页面头部出现一个空白行,导致这样的原因就是页面的编码格式是UTF-8 + BOM 解决方法,最简单的就是使用编辑器重新保存文件 ...

  5. (转)Linux下使用system()函数一定要谨慎

    转:http://my.oschina.net/renhc/blog/53580 曾经的曾经,被system()函数折磨过,之所以这样,是因为对system()函数了解不够深入.只是简单的知道用这个函 ...

  6. RZ、NRZ、NRZI、曼彻斯特编码

    Frm: http://blog.sina.com.cn/s/blog_78e87ba10102wj9g.html 在数字电路中,组成一连串信息的基元就是0和1,无论是在CPU.DSP.MCU甚至是个 ...

  7. cut 从/a/b/c/d/e获取/a/b/c

    https://www.cnblogs.com/chenxiaomeng/p/10066821.html two_dir=`echo /a/b/c/d/e/f | cut -d"/" ...

  8. Firefox好用的快捷键

    1,Alt+D 你可以使用该快捷键直接把光标转到火狐的地址栏.非常有用 2,Ctrl + T和Ctrl + Shift + T Ctrl+T帮你打开一个新标签,Ctrl+Shift+T重新打开上次关闭 ...

  9. js 中typeof 检测数据类型的时候需要注意的小细节

    博客搬迁给你带来的不便,敬请谅解! http://www.suanliutudousi.com/2017/10/26/typeof-%E6%A3%80%E6%B5%8B%E6%95%B0%E6%8D% ...

  10. Storm框架设计