用start-stop-daemon启动Nginx

用start-stop-daemon启动Nginx

在前面学习Ubuntu apt-get install nginx 创建的nginx启动脚本中,看到start-stop-daemon的用法。

迅速查了一下手册(用man start-stop-daemon)。这个程序用来启动和关闭系统级别的进程。

下面我用该命令启动我自己编译的nginx程序:

start-stop-daemon --start --quiet --make-pidfile --pidfile /opt/nginx.pid --exec /home/chenshu/nginx/bin/nginx  -- -c /home/chenshu/nginx/etc_nginx/nginx.conf   

注意,这里都使用绝对路径,相对路径会有问题。

  • –pidfile 指定了保存进程id的文件 /opt/nginx.pid
    –exec 指定了可执行程序
    – 之后加上传递给nginx的参数 -c /home/chenshu/nginx/etc_nginx/nginx.conf
    –make-pidfile 使用 是因为有时候start-stop-daemon 不产生pidfile

单独运行nginx的时候,还可以指定 -t参数用于测试-c 参数指定的配置文件是否正确。

由于我要将所有的nginx程序,日志,配置都放在/home/dist/carrier/nginx目录下,因此对应的修改启动脚本/etc/init.d/nginx

由于没有找到办法指定error log的位置. 因此现在绕过的方法是 编译nginx的时候使用–prefix=/home/dist/carrier/nginx参数。

这里用到了之前没有用的DAEMON_OPTS变量,传递-c参数。注意,必须用双引号。

#!/bin/sh  

### BEGIN INIT INFO  
# Provides:          nginx  
# Required-Start:    $local_fs $remote_fs $network $syslog  
# Required-Stop:     $local_fs $remote_fs $network $syslog  
# Default-Start:     2 3 4 5  
# Default-Stop:      0 1 6  
# Short-Description: starts the nginx web server  
# Description:       starts nginx using start-stop-daemon  
### END INIT INFO  

PATH=/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin  
CARRIER_HOME=/home/dist/carrier  
DAEMON=$CARRIER_HOME/nginx/bin/nginx  
PID_FILE=$CARRIER_HOME/nginx/nginx.pid  
CONFIG_FILE=$CARRIER_HOME/nginx/conf/nginx.conf  
DAEMON_OPTS="-c $CONFIG_FILE"  
NAME=nginx  
DESC=nginx  

# Include nginx defaults if available  
if [ -f /etc/default/nginx ]; then  
    . /etc/default/nginx  
fi  

test -x $DAEMON || exit 0  

set -e  

. /lib/lsb/init-functions  

test_nginx_config() {  
    if $DAEMON -t $DAEMON_OPTS >/dev/null 2>&1; then  
        return 0  
    else  
        $DAEMON -t $DAEMON_OPTS  
        return $?  
    fi  
}  

case "$1" in  
    start)  
        echo -n "Starting $DESC: "  
        test_nginx_config  
        # Check if the ULIMIT is set in /etc/default/nginx  
        if [ -n "$ULIMIT" ]; then  
            # Set the ulimits  
            ulimit $ULIMIT  
        fi  
        start-stop-daemon --start --quiet --make-pidfile --pidfile $PID_FILE --exec $DAEMON -- $DAEMON_OPTS || true  
        echo "$NAME."  
        ;;  

    stop)  
        echo -n "Stopping $DESC: "  
        start-stop-daemon --stop --quiet --pidfile $PID_FILE --exec $DAEMON || true  
        echo "$NAME."  
        ;;  

    restart|force-reload)  
        echo -n "Restarting $DESC: "  
        start-stop-daemon --stop --quiet --pidfile $PID_FILE --exec $DAEMON || true  
        sleep 1  
        test_nginx_config  
        # Check if the ULIMIT is set in /etc/default/nginx  
        if [ -n "$ULIMIT" ]; then  
            # Set the ulimits  
            ulimit $ULIMIT  
        fi  
        start-stop-daemon --start --quiet --make-pidfile --pidfile $PID_FILE --exec $DAEMON -- $DAEMON_OPTS || true  
        echo "$NAME."  
        ;;  

    reload)  
        echo -n "Reloading $DESC configuration: "  
        test_nginx_config  
        start-stop-daemon --stop --signal HUP --quiet --pidfile $PID_FILE --exec $DAEMON || true  
        echo "$NAME."  
        ;;  

    configtest|testconfig)  
        echo -n "Testing $DESC configuration: "  
        if test_nginx_config; then  
            echo "$NAME."  
        else  
            exit $?  
        fi  
        ;;  

    status)  
        status_of_proc -p $PID_FILE "$DAEMON" nginx && exit 0 || exit $?  
        ;;  
    *)  
        echo "Usage: $NAME {start|stop|restart|reload|force-reload|status|configtest}" >&2  
        exit 1  
        ;;  
esac  

exit 0  
  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
linux系统命令start-stop-daemon的源码及二进制,其中也提供了一个服务启动脚本模板。 此程序能帮助你实现将命令行程序变成服务运行,比如将"java -jar xxx.jar" 放在后台执行。 ./start-stop-daemon --help start-stop-daemon 1.9.18 for Debian - small and fast C version written by Marek Michalkiewicz , public domain. Usage: start-stop-daemon -S|--start options ... -- arguments ... start-stop-daemon -K|--stop options ... start-stop-daemon -H|--help start-stop-daemon -V|--version Options (at least one of --exec|--pidfile|--user is required): -x|--exec program to start/check if it is running -p|--pidfile pid file to check -c|--chuid change to this user/group before starting process -w|--chdir change the work directory to 'dir' -u|--user | stop processes owned by this user -n|--name stop processes with this name -s|--signal signal to send (default TERM) -a|--startas program to start (default is ) -N|--nicelevel add incr to the process's nice level -b|--background force the process to detach -m|--make-pidfile create the pidfile before starting -R|--retry check whether processes die, and retry -t|--test test mode, don't do anything -o|--oknodo exit status 0 (not 1) if nothing done -q|--quiet be more quiet -v|--verbose be more verbose Retry is |//... where is one of -|[-] send that signal wait that many seconds forever repeat remainder forever or may be just , meaning //KILL/ Exit status: 0 = done 1 = nothing done (=> 0 if --oknodo) 3 = trouble 2 = with --retry, processes wouldn't die
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值