Процесс Haproxy не может быть перезапущен или уничтожен

Бег Haproxy 1.9.4 на Ubuntu 14.04и использовать init.d скрипт для управления процессом и автозапуска при загрузке системы. Часть автозапуска работает нормально.

По какой-то причине system haproxy restart а также system haproxy stop не влияет на процесс вообще, так как процесс просто продолжает работать. Я прилагаю init.d скрипт как ниже

#!/bin/sh
### BEGIN INIT INFO
# Provides:          haproxy
# Required-Start:    $local_fs $network
# Required-Stop:     $local_fs
# Default-Start:     2 3 4 5
# Default-Stop:      0 1 6
# Short-Description: fast and reliable load balancing reverse proxy
# Description:       This file should be used to start and stop haproxy.
### END INIT INFO

PATH=/sbin:/usr/sbin:/bin:/usr/bin
PIDFILE=/var/run/haproxy.pid
CONFIG=/etc/haproxy/haproxy.cfg
HAPROXY=/usr/local/sbin/haproxy
EXTRAOPTS=
ENABLED=1

test -x $HAPROXY || exit 0
test -f "$CONFIG" || exit 0

#if [ -e /etc/default/haproxy ]; then
#       . /etc/default/haproxy
#fi

test "$ENABLED" != "0" || exit 0

[ -f /etc/default/rcS ] && . /etc/default/rcS
. /lib/lsb/init-functions


haproxy_start()
{
        start-stop-daemon --start --pidfile "$PIDFILE" \
                --exec $HAPROXY -- -f "$CONFIG" -p "$PIDFILE" \
                $EXTRAOPTS || return 2
        return 0
}

haproxy_stop()
{
        if [ ! -f $PIDFILE ] ; then
                # This is a success according to LSB
                return 0
        fi
        for pid in $(cat $PIDFILE) ; do
                /bin/kill $pid || return 4
        done
        rm -f $PIDFILE
        return 0
}

haproxy_reload()
{
        $HAPROXY -f "$CONFIG" -p $PIDFILE $EXTRAOPTS -sf $(cat $PIDFILE) \
                || return 2
        return 0
}

haproxy_checkconf()
{
        rcode=0

        $HAPROXY -c -f "$CONFIG"
        if [ $? -ne 0 ]; then
                rcode=1
        fi

        return $rcode
}

haproxy_status()
{
        if [ ! -f $PIDFILE ] ; then
                # program not running
                return 3
        fi

        for pid in $(cat $PIDFILE) ; do
                if ! ps --no-headers p "$pid" | grep haproxy > /dev/null ; then
                        # program running, bogus pidfile
                        return 1
                fi
        done

        return 0
}

case "$1" in
checkconf)
        haproxy_checkconf
        exit $?
        ;;
start)
        log_daemon_msg "Starting haproxy" "haproxy"
        haproxy_start
        ret=$?
        case "$ret" in
        0)
                log_end_msg 0
                ;;
        1)
                log_end_msg 1
                echo "pid file '$PIDFILE' found, haproxy not started."
                ;;
        2)
                log_end_msg 1
                ;;
        esac
        exit $ret
        ;;
stop)
        log_daemon_msg "Stopping haproxy" "haproxy"
        haproxy_stop
        ret=$?
        case "$ret" in
        0|1)
                log_end_msg 0
                ;;
        2)
                log_end_msg 1
                ;;
        esac
        exit $ret
        ;;
reload|force-reload)
        echo "Checking HAProxy configuration first"
        haproxy_checkconf
        case "$?" in
        0)
                echo "Everything looks fine"
                ;;
        1)
                echo "Errors..."
                exit 1
                ;;
        esac

        log_daemon_msg "Reloading haproxy" "haproxy"
        haproxy_reload
        case "$?" in
        0|1)
                log_end_msg 0
                ;;
        2)
                log_end_msg 1
                ;;
        esac
        ;;
restart)
        echo "Checking HAProxy configuration first"
        haproxy_checkconf
        case "$?" in
        0)
                echo "Everything looks fine"
                ;;
        1)
                echo "Errors..."
                exit 1
                ;;
        esac

        log_daemon_msg "Restarting haproxy" "haproxy"
        haproxy_stop
        haproxy_start
        case "$?" in
        0)
                log_end_msg 0
                ;;
        1)
                log_end_msg 1
                ;;
        2)
                log_end_msg 1
                ;;
        esac
        ;;
status)
        haproxy_status
        ret=$?
        case "$ret" in
        0)
                echo "haproxy is running."
                ;;
        1)
                echo "haproxy dead, but $PIDFILE exists."
                ;;
        *)
                echo "haproxy not running."
                ;;
        esac
        exit $ret
        ;;
*)
        echo "Usage: /etc/init.d/haproxy {start|stop|reload|restart|status|checkconf}"
        exit 2
        ;;
esac
;

Что еще более странно, даже не может завершить процесс, отправив SIGTERM или SIGSTOP в htop, Есть идеи почему?

0 ответов

Другие вопросы по тегам