Skip to content

Instantly share code, notes, and snippets.

@simple
Created October 22, 2011 09:30
Show Gist options
  • Save simple/1305810 to your computer and use it in GitHub Desktop.
Save simple/1305810 to your computer and use it in GitHub Desktop.
SysV init script for HAProxy
#!/bin/sh
#
# haproxy tcp/http proxy daemon
#
# chkconfig: <default runlevel(s)> <start> <stop>
# description: tcp/http proxy daemon, installed for ESG server proxy
#
### BEGIN INIT INFO
# Provides:
# Required-Start:
# Required-Stop:
# Should-Start:
# Should-Stop:
# Default-Start:
# Default-Stop:
# Short-Description:
# Description:
### END INIT INFO
# Source function library.
. /etc/rc.d/init.d/functions
exec="/usr/local/sbin/haproxy"
prog="haproxy"
config="/etc/haproxy/haproxy.cfg"
pidfile="/var/run/$prog.pid"
[ -e /etc/sysconfig/$prog ] && . /etc/sysconfig/$prog
start() {
[ -x $exec ] || exit 5
[ -f $config ] || exit 6
echo -n $"Starting $prog: "
# if not running, start it up here, usually something like "daemon $exec"
$exec -f $config -D -p $pidfile
retval=$?
[ $retval -eq 0 ] && echo " started"
return $retval
}
stop() {
echo -n $"Stopping $prog: "
# stop it here, often "killproc $prog"
for pid in `cat $pidfile`
do
/bin/kill $pid || return 4
done
retval=$?
if [ $retval -eq 0 ]; then
echo " stopped"
rm -f $pidfile
fi
return $retval
}
restart() {
stop
start
}
reload() {
restart
}
force_reload() {
restart
}
rh_status() {
# run checks to determine if the service is running or use generic status
if [ ! -f $pidfile ] ; then
echo "# program not running"
return 3
fi
for pid in $(cat $pidfile) ; do
if ! ps --no-headers p "$pid" | grep haproxy > /dev/null ; then
echo "# program running, bogus pidfile"
return 1
fi
done
echo "$prog is running"
return 0
}
rh_status_q() {
rh_status >/dev/null 2>&1
}
case "$1" in
start)
rh_status_q && exit 0
$1
;;
stop)
rh_status_q || exit 0
$1
;;
restart)
$1
;;
reload)
rh_status_q || exit 7
$1
;;
force-reload)
force_reload
;;
status)
rh_status
;;
condrestart|try-restart)
rh_status_q || exit 0
restart
;;
*)
echo $"Usage: $0 {start|stop|status|restart|condrestart|try-restart|reload|force-reload}"
exit 2
esac
exit $?
@simple
Copy link
Author

simple commented Oct 22, 2011

used Fedora template(http://fedoraproject.org/wiki/Packaging:SysVInitScript).
borrowed ubuntu package's pid handling.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment