nginx启停脚本

安装nginx时,源码包中未带官方的启动脚本,也就无法使用service nginxd start这种启动方式,查了下资料自己写了一个:

#!/bin/bash

#@version: 0.0.1
#@author: lifafu
#@file:
#@time: 2017/02/04 08:00
#@company: 

source /etc/profile            #加载系统环境变量
source $HOME/.bash_profile    #加载用户环境变量
#set -o nounset             #引用未初始化变量时终止执行,也可以set -u
#set -o errexit                #执行任何语句返回非0状态时终止执行,也可以set -e

# chkconfig: - 99 50
# 虽然前面带#号,是注释,但要用chkconfig命令注册开机启动服务器的话,该句必不可少,格式也不能错!
# 3个chkconfig参数的含义:
# x:是指定该脚本在哪个系统启动级别下运行,比如你需要在3,4,5上运行,那么第二位就设置成345,我这里用的是”-”,代表在2,3,4,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=0

# 设置程序名称
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 0

# 定义启动函数
start() {
    # 判断程序是否存在,否则异常退出
    [ -x $nginxd ] || { echo “FATAL: No such programme”;exit 4; }

    # 判断配置文件是否存在,否则异常退出
    [ -f $nginx_config ] || { echo “FATAL:Config file does not exist”;exit 6; }

    # 判断程序是否运行,否则异常退出
    if [ -e $nginx_pid ];then
        echo "nginx already running...."
        exit 1
    fi

    # 判断lock文件是否存在,否则异常退出
    if [ -e $nginx_lock ];then
        echo "nginx lock file does exist...."
        exit 1
    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 = 0 ] && 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 = 0 ] && 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 1
esac
exit $RETVAL

保存为nginxd,复制到/etc/init.d/中并赋予执行权限就可以使用service nginxd start等命令了;

如果需要加入开机启动:chkconfig --add nginxd;chkconfig nginxd on;

启停程序也可以使用类似的方式自己编写启动脚本,不过这种方式还是有缺陷,就是必须使用root用户运行这类脚本。

时间: 2024-10-11 02:24:44

nginx启停脚本的相关文章

nginx 启停脚本

#! /bin/sh# chkconfig: 35 85 15# description: This is nginx start and stop script PATH=/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin DESC="nginx daemon" NAME=nginx DAEMON=/usr/sbin/$NAME CONFIGFILE=/etc/nginx/$NAME.conf PIDFILE=/v

Linux 程序启停脚本

start.sh #!/bin/sh java -jar ./program.jar & echo $! > /var/run/program.pid stop.sh #!/bin/sh PID=$(cat /var/run/program.pid) kill $PID 原文链接:Linux 程序启停脚本 - 零度空间

专业规范的mysql启停脚本

#!/bin/sh########################################################ShellName:mysql启停脚本 ##Author:zkg ##Created Time:2019-08-23 ##Blog Address:https://blog.51cto.com/1009516 ######################################################## #调用系统函数库. /etc/init.d/f

Oracle BIEE启停脚本

作为BI的开发人员,经常启停BI服务在所难免,启动的过程又比较长,命令需要不同目录切换,简直烦死人呢, 特意整理了linux中的启动脚本,将以下脚本存成biee.sh,后面的过程就相当简单了, 启动:./biee.sh start 停止 :  ./biee.sh stop 重启:./biee restart 日志的观察: tail -f /var/log/obiee-start.log tail -f /var/log/obiee-stop.log 以下是脚本内容,保存成.sh文件,然后chmo

Onsql和MySQL的启停脚本

启停onesql,总共四个参数{start|stop|restart|status},只要稍微改一下头部的三个文件路径,即可完成mysql单实例的启停. [#9(zhouxx_vm(node3:192.168.56.103))#[email protected]~]#service onesql5.6.26 Usage:sh /etc/init.d/onesql5.6.26 {start|stop|restart|status} 详细执行效果如下: [#2(zhouxx_vm(node3:192

python启停脚本的编写

先占个位置,打算记录一下启停python 的脚本start.sh,stop.sh的写法. 内容包括启动python脚本的方式,日志的重定向,获取进程id,以及杀掉进程. 参考文章: http://blog.sina.com.cn/s/blog_61c006ea0100mkax.html https://www.cnblogs.com/evilliu/p/7682444.html https://www.cnblogs.com/zhangwuji/p/8059539.html 原文地址:https

Redis启停脚本

环境:多实例环境,需指定端口进行启停服务 编写脚本: #!bin/sh#调用函数功能#这是redis的启动.停止.重启脚本REDISPORT=$1#redis的pidEXEC=/usr/local/redis4/bin/redis-server CONF="/etc/redis/${REDISPORT}.conf"CLIEXEC=/usr/local/redis4/bin/redis-cli#redis的PID文件位置,需要修改PIDFILE=/var/run/redis_${REDI

liunx weblogic服务启停脚本

1 #!/bin/bash 2 #sh xx.sh start xx项目 例如:sh autoWeblogic.sh start bius 3 #经测试发现weblogic 启动大概需要完全启动成功35秒左右 停止大概需要1~7秒 4 #如果多个项目可以把DOMAIN_NAME换成动态的参数进行传递 5 ### BEGIN WLS Configration 6 DOMAIN_NAME=appadmin 7 SERVER_NAME=$2 8 #得到服务器的ip 9 IP=`ifconfig | g

weblogic启停脚本

weblogic启动 使用端口是否打开来判定服务是否启动. #!/bin/bash #author:wjf #date:2015/05/19 #测试环境为wls1036水平集群 v_curr_user=`whoami` v_start_user=uweblogic #------------用于安装和启动weblogic服务器的用户 v_admin_url=http://10.10.71.106:9001 #------------管理服务器的url v_dir_domain_bin=/webl