aboutsummaryrefslogtreecommitdiff
path: root/network/haproxy/rc.haproxy
blob: a95a4071339313fa7932332a87f5f1b085a37365 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
#!/bin/sh

HAPROXY=/usr/sbin/haproxy
CONFIG=/etc/haproxy/haproxy.cfg
PIDFILE=/var/run/haproxy.pid

start() {
    if [ -r $PIDFILE ]; then
        echo 'HAProxy is already running!'
        return
    fi
    $HAPROXY -f $CONFIG -D -p $PIDFILE
}

stop() {
    if [ ! -r $PIDFILE ]; then
        echo 'HAProxy is not running!'
        return
    fi
    echo "Soft-stopping HAProxy..."
    kill -USR1 `cat $PIDFILE`
    # Even with the right permissions the PID file will not be removed...
    rm -f $PIDFILE
}

force_stop() {
    if [ ! -r $PIDFILE ]; then
        echo 'HAProxy is not running!'
        return
    fi
    echo "Hard-stopping HAProxy..."
    kill `cat $PIDFILE`
    # Even with the right permissions the PID file will not be removed...
    rm -f $PIDFILE
}

status() {
    if [ ! -r $PIDFILE ]; then
        echo "HAProxy is not running."
        return
    fi
    PID=`cat $PIDFILE`
    if [ -z "$PID" ]; then
        echo 'PID file is empty! HAProxy does not appear to be running, but there is a stale PID file.'
    elif kill -0 $PID; then
        echo "HAProxy is running."
    else
        echo "HAProxy is not running, but there is a stale PID file."
    fi
}

checkconfig() {
    $HAPROXY -c -q -V -f $CONFIG
}

case "$1" in
    'start')
        start
        ;;
    'stop')
        stop
        ;;
    'force_stop')
        force_stop
        ;;
    'restart')
        stop
        start
        ;;
    'force_restart')
        force_stop
        start
        ;;
    'status')
        status
        ;;
    'checkconfig')
        checkconfig
        ;;
    *)
        echo "Usage: $0 {start|stop|force_stop|restart|force_restart|status|checkconfig}"
        exit 1
        ;;
esac