summaryrefslogtreecommitdiff
path: root/network/haproxy/rc.haproxy
diff options
context:
space:
mode:
Diffstat (limited to 'network/haproxy/rc.haproxy')
-rw-r--r--network/haproxy/rc.haproxy105
1 files changed, 79 insertions, 26 deletions
diff --git a/network/haproxy/rc.haproxy b/network/haproxy/rc.haproxy
index 5663cc37a1..a95a407133 100644
--- a/network/haproxy/rc.haproxy
+++ b/network/haproxy/rc.haproxy
@@ -1,31 +1,84 @@
#!/bin/sh
-#
-# HAProxy daemon control script.
-# Written for Slackware Linux by Cherife Li <cherife-#-dotimes.com>.
-BIN=/usr/sbin/haproxy
-CONF=/etc/haproxy/haproxy.cfg
-PID=/var/run/haproxy.pid
+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
- check)
- echo "Checking HAProxy configuration file..."
- $BIN -f $CONF -cV
- ;;
- start)
- echo "Starting HAProxy..."
- $BIN -f $CONF -D -p $PID
- ;;
- stop)
- echo "Shutting down HAProxy..."
- kill -TERM `cat $PID`
- rm -f $PID &> /dev/null
- ;;
- restart)
- stop
- sleep 2
- start
- ;;
- *)
- echo "usage `basename $0` {check|start|stop|restart}"
+ '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