From: "Fabio M. Di Nitto" <fdinitto@xxxxxxxxxx>
- rename generic.in and notifyd.in to corosync.in and corosync-notifyd.in
(makes build simpler)
- fix sysvinit corosync.in sleep time to include a check for when IPC
are ready and drop cman bits (there is no cman with corosync 2.0)
- corosync-notifyd.service should always start after corosync.service
- corosync.service should always start after network
- corosync.service uses init script wrapper
- install/ship sysvinit as wrappers for systemd in /usr/share/corosync
when necessary
- change the build system to deal with all of the above
Signed-off-by: Fabio M. Di Nitto <fdinitto@xxxxxxxxxx>
---
TODO | 1 -
configure.ac | 9 ++
corosync.spec.in | 3 +
init/Makefile.am | 32 +++----
init/corosync-notifyd.in | 153 +++++++++++++++++++++++++++++++
init/corosync-notifyd.service.in | 1 +
init/corosync.in | 178 ++++++++++++++++++++++++++++++++++++
init/corosync.service.in | 7 +-
init/generic.in | 184 --------------------------------------
init/notifyd.in | 153 -------------------------------
10 files changed, 360 insertions(+), 361 deletions(-)
create mode 100755 init/corosync-notifyd.in
create mode 100755 init/corosync.in
delete mode 100755 init/generic.in
delete mode 100755 init/notifyd.in
diff --git a/TODO b/TODO
index 18a8a08..c831948 100644
--- a/TODO
+++ b/TODO
@@ -17,7 +17,6 @@
* porting of qdisk to votequorum and eventually finalize qdevice API
in votequorum. (Fabio)
* Cleaner shutdown process -> free memory (Fabio)
-* Merge init and systemd stuff (Fabio)
--------------------------------------
Current priority list for Needle 2.X
diff --git a/configure.ac b/configure.ac
index f2222b2..7ce168f 100644
--- a/configure.ac
+++ b/configure.ac
@@ -290,6 +290,11 @@ AC_ARG_WITH([systemddir],
[ SYSTEMDDIR="$withval" ],
[ SYSTEMDDIR="/lib/systemd/system" ])
+AC_ARG_WITH([initwrappersdir],
+ [ --with-initwrappersdir=DIR : path to init wrappers files directory. ],
+ [ INITWRAPPERSDIR="$withval" ],
+ [ INITWRAPPERSDIR="$datarootdir/corosync" ])
+
AC_ARG_ENABLE([snmp],
[ --enable-snmp : SNMP protocol support ],
[ default="no" ])
@@ -585,6 +590,8 @@ LDFLAGS="$ENV_LDFLAGS $COVERAGE_LDFLAGS $OS_LDFLAGS"
# substitute what we need:
AC_SUBST([INITDDIR])
AC_SUBST([SYSTEMDDIR])
+INITWRAPPERSDIR=$(eval echo ${INITWRAPPERSDIR})
+AC_SUBST([INITWRAPPERSDIR])
AC_SUBST([SOMAJOR])
AC_SUBST([SOMINOR])
@@ -631,6 +638,8 @@ AC_MSG_RESULT([ Arch-independent files = ${datadir}])
AC_MSG_RESULT([ State information = ${localstatedir}])
AC_MSG_RESULT([ System configuration = ${sysconfdir}])
AC_MSG_RESULT([ System init.d directory = ${INITDDIR}])
+AC_MSG_RESULT([ System systemd directory = ${SYSTEMDDIR}])
+AC_MSG_RESULT([ System init wraps dir = ${INITWRAPPERSDIR}])
AC_MSG_RESULT([ corosync config dir = ${COROSYSCONFDIR}])
AC_MSG_RESULT([ Features =${PACKAGE_FEATURES}])
AC_MSG_RESULT([])
diff --git a/corosync.spec.in b/corosync.spec.in
index 4062351..1c99d20 100644
--- a/corosync.spec.in
+++ b/corosync.spec.in
@@ -169,6 +169,9 @@ fi
%if %{with systemd}
%{_unitdir}/corosync.service
%{_unitdir}/corosync-notifyd.service
+%dir %{_datadir}/corosync
+%{_datadir}/corosync/corosync
+%{_datadir}/corosync/corosync-notifyd
%else
%{_initrddir}/corosync
%{_initrddir}/corosync-notifyd
diff --git a/init/Makefile.am b/init/Makefile.am
index 00d56d4..8e4d4c7 100644
--- a/init/Makefile.am
+++ b/init/Makefile.am
@@ -34,38 +34,30 @@
MAINTAINERCLEANFILES = Makefile.in
-EXTRA_DIST = generic.in notifyd.in corosync.service.in corosync-notifyd.service.in
+EXTRA_DIST = corosync.in corosync-notifyd.in corosync.service.in corosync-notifyd.service.in
if INSTALL_SYSTEMD
-systemdconfdir = $(SYSTEMDDIR)
-systemdconf_DATA = corosync.service corosync-notifyd.service
+systemdconfdir = $(SYSTEMDDIR)
+systemdconf_DATA = corosync.service corosync-notifyd.service
+initscriptdir = $(INITWRAPPERSDIR)
else
-target_INIT = generic notifyd
+initscriptdir = $(INITDDIR)
endif
+initscript_SCRIPTS = corosync corosync-notifyd
%: %.in Makefile
rm -f $@-t $@
- sed \
+ cp $< $@-t
+ sed -i \
-e 's#@''SBINDIR@#$(sbindir)#g' \
-e 's#@''SYSCONFDIR@#$(sysconfdir)#g' \
-e 's#@''INITDDIR@#$(INITDDIR)#g' \
+ -e 's#@''INITWRAPPERSDIR@#$(INITWRAPPERSDIR)#g' \
-e 's#@''LOCALSTATEDIR@#$(localstatedir)#g' \
- $< > $@-t
+ $@-t
mv $@-t $@
-all-local: $(target_INIT) $(systemdconf_DATA)
+all-local: $(initscript_SCRIPTS) $(systemdconf_DATA)
clean-local:
- rm -rf $(target_INIT) $(systemdconf_DATA)
-
-if INSTALL_SYSTEMD
-else
-install-exec-local:
- $(INSTALL) -d $(DESTDIR)/$(INITDDIR)
- $(INSTALL) -m 755 generic $(DESTDIR)/$(INITDDIR)/corosync
- $(INSTALL) -m 755 notifyd $(DESTDIR)/$(INITDDIR)/corosync-notifyd
-
-uninstall-local:
- cd $(DESTDIR)/$(INITDDIR) && \
- rm -f corosync corosync-notifyd
-endif
+ rm -rf $(initscript_SCRIPTS) $(systemdconf_DATA)
diff --git a/init/corosync-notifyd.in b/init/corosync-notifyd.in
new file mode 100755
index 0000000..84de9ae
--- /dev/null
+++ b/init/corosync-notifyd.in
@@ -0,0 +1,153 @@
+#!/bin/bash
+
+# Authors:
+# Angus Salkeld <asalkeld@xxxxxxxxxx>
+#
+# License: Revised BSD
+
+# chkconfig: - 23 77
+# description: Corosync Dbus and snmp notifier
+# processname: corosync-notifyd
+#
+### BEGIN INIT INFO
+# Provides: corosync-notifyd
+# Required-Start: $corosync $cman
+# Required-Stop: $corosync $cman
+# Default-Start:
+# Default-Stop:
+# Short-Description: Starts and stops Corosync Notifier.
+# Description: Starts and stops Corosync Notifier.
+### END INIT INFO
+
+desc="Corosync Notifier"
+prog="corosync-notifyd"
+
+# set secure PATH
+PATH="/sbin:/bin:/usr/sbin:/usr/bin:@SBINDIR@"
+
+success()
+{
+ echo -ne "[ OK ]\r"
+}
+
+failure()
+{
+ echo -ne "[FAILED]\r"
+}
+
+status()
+{
+ pid=$(pidof $1 2>/dev/null)
+ rtrn=$?
+ if [ $rtrn -ne 0 ]; then
+ echo "$1 is stopped"
+ else
+ echo "$1 (pid $pid) is running..."
+ fi
+ return $rtrn
+}
+
+# rpm based distros
+if [ -d @SYSCONFDIR@/sysconfig ]; then
+ [ -f @INITDDIR@/functions ] && . @INITDDIR@/functions
+ [ -f @SYSCONFDIR@/sysconfig/$prog ] && . @SYSCONFDIR@/sysconfig/$prog
+ [ -z "$LOCK_FILE" ] && LOCK_FILE="@LOCALSTATEDIR@/lock/subsys/$prog"
+fi
+
+# deb based distros
+if [ -d @SYSCONFDIR@/default ]; then
+ [ -f @SYSCONFDIR@/default/$prog ] && . @SYSCONFDIR@/default/$prog
+ [ -z "$LOCK_FILE" ] && LOCK_FILE="@LOCALSTATEDIR@/lock/$prog"
+fi
+
+# The version of __pids_pidof in /etc/init.d/functions calls pidof with -x
+# This means it matches scripts, including this one.
+# Redefine it here so that status (from the same file) works.
+# Otherwise simultaneous calls to stop() will loop forever
+__pids_pidof() {
+ pidof -c -o $$ -o $PPID -o %PPID "$1" || \
+ pidof -c -o $$ -o $PPID -o %PPID "${1##*/}"
+}
+
+start()
+{
+ echo -n "Starting $desc ($prog): "
+
+ # most recent distributions use tmpfs for @LOCALSTATEDIR@/run
+ # to avoid to clean it up on every boot.
+ # they also assume that init scripts will create
+ # required subdirectories for proper operations
+ mkdir -p @LOCALSTATEDIR@/run
+
+ if status $prog > /dev/null 2>&1; then
+ success
+ else
+ $prog $OPTIONS > /dev/null 2>&1
+
+ # give it time to fail
+ sleep 2
+ if status $prog > /dev/null 2>&1; then
+ touch $LOCK_FILE
+ success
+ else
+ failure
+ rtrn=1
+ fi
+ fi
+ echo
+}
+
+stop()
+{
+ ! status $prog > /dev/null 2>&1 && return
+
+ echo -n "Signaling $desc ($prog) to terminate: "
+ kill -TERM $(pidof $prog) > /dev/null 2>&1
+ success
+ echo
+
+ echo -n "Waiting for $prog services to unload:"
+ while status $prog > /dev/null 2>&1; do
+ sleep 1
+ echo -n "."
+ done
+
+ rm -f $LOCK_FILE
+ success
+ echo
+}
+
+restart()
+{
+ stop
+ start
+}
+
+rtrn=0
+
+case "$1" in
+start)
+ start
+;;
+restart|reload|force-reload)
+ restart
+;;
+condrestart|try-restart)
+ if status $prog > /dev/null 2>&1; then
+ restart
+ fi
+;;
+status)
+ status $prog
+ rtrn=$?
+;;
+stop)
+ stop
+;;
+*)
+ echo "usage: $0 {start|stop|restart|reload|force-reload|condrestart|try-restart|status}"
+ rtrn=2
+;;
+esac
+
+exit $rtrn
diff --git a/init/corosync-notifyd.service.in b/init/corosync-notifyd.service.in
index 26a278a..172653c 100644
--- a/init/corosync-notifyd.service.in
+++ b/init/corosync-notifyd.service.in
@@ -1,6 +1,7 @@
[Unit]
Description=Corosync Dbus and snmp notifier
Wants=corosync.service
+After=corosync.service
[Service]
EnvironmentFile=@SYSCONFIGDIR@/corosync-notifyd
diff --git a/init/corosync.in b/init/corosync.in
new file mode 100755
index 0000000..a9840bd
--- /dev/null
+++ b/init/corosync.in
@@ -0,0 +1,178 @@
+#!/bin/bash
+
+# Authors:
+# Andrew Beekhof <abeekhof@xxxxxxxxxx>
+# Fabio M. Di Nitto <fdinitto@xxxxxxxxxx>
+#
+# License: Revised BSD
+
+# chkconfig: - 20 80
+# description: Corosync Cluster Engine
+# processname: corosync
+#
+### BEGIN INIT INFO
+# Provides: corosync
+# Required-Start: $network $syslog
+# Required-Stop: $network $syslog
+# Default-Start:
+# Default-Stop:
+# Short-Description: Starts and stops Corosync Cluster Engine.
+# Description: Starts and stops Corosync Cluster Engine.
+### END INIT INFO
+
+desc="Corosync Cluster Engine"
+prog="corosync"
+
+# set secure PATH
+PATH="/sbin:/bin:/usr/sbin:/usr/bin:@SBINDIR@"
+
+success()
+{
+ echo -ne "[ OK ]\r"
+}
+
+failure()
+{
+ echo -ne "[FAILED]\r"
+}
+
+status()
+{
+ pid=$(pidof $1 2>/dev/null)
+ rtrn=$?
+ if [ $rtrn -ne 0 ]; then
+ echo "$1 is stopped"
+ else
+ echo "$1 (pid $pid) is running..."
+ fi
+ return $rtrn
+}
+
+# rpm based distros
+if [ -d @SYSCONFDIR@/sysconfig ]; then
+ [ -f @INITDDIR@/functions ] && . @INITDDIR@/functions
+ [ -f @SYSCONFDIR@/sysconfig/$prog ] && . @SYSCONFDIR@/sysconfig/$prog
+ [ -z "$LOCK_FILE" ] && LOCK_FILE="@LOCALSTATEDIR@/lock/subsys/$prog"
+fi
+
+# deb based distros
+if [ -d @SYSCONFDIR@/default ]; then
+ [ -f @SYSCONFDIR@/default/$prog ] && . @SYSCONFDIR@/default/$prog
+ [ -z "$LOCK_FILE" ] && LOCK_FILE="@LOCALSTATEDIR@/lock/$prog"
+fi
+
+# The version of __pids_pidof in /etc/init.d/functions calls pidof with -x
+# This means it matches scripts, including this one.
+# Redefine it here so that status (from the same file) works.
+# Otherwise simultaneous calls to stop() will loop forever
+__pids_pidof() {
+ pidof -c -o $$ -o $PPID -o %PPID "$1" || \
+ pidof -c -o $$ -o $PPID -o %PPID "${1##*/}"
+}
+
+cluster_disabled_at_boot()
+{
+ if grep -q nocluster /proc/cmdline && \
+ [ "$(tty)" = "/dev/console" ]; then
+ echo -e "not configured to run at boot"
+ failure
+ return 1
+ fi
+ return 0
+}
+
+wait_for_ipc()
+{
+ try=0
+ while [ "$try" -le "20" ]; do
+ if corosync-cfgtool -s > /dev/null 2>&1; then
+ return 0
+ fi
+ sleep 0.5
+ try=$((try + 1))
+ done
+
+ return 1
+}
+
+start()
+{
+ echo -n "Starting $desc ($prog): "
+
+ ! cluster_disabled_at_boot && return
+
+ # most recent distributions use tmpfs for @LOCALSTATEDIR@/run
+ # to avoid to clean it up on every boot.
+ # they also assume that init scripts will create
+ # required subdirectories for proper operations
+ mkdir -p @LOCALSTATEDIR@/run
+
+ if status $prog > /dev/null 2>&1; then
+ success
+ else
+ $prog > /dev/null 2>&1
+
+ if ! wait_for_ipc; then
+ failure
+ rtrn=1
+ fi
+ touch $LOCK_FILE
+ success
+ fi
+ echo
+}
+
+stop()
+{
+ ! status $prog > /dev/null 2>&1 && return
+
+ echo -n "Signaling $desc ($prog) to terminate: "
+ kill -TERM $(pidof $prog) > /dev/null 2>&1
+ success
+ echo
+
+ echo -n "Waiting for $prog services to unload:"
+ while status $prog > /dev/null 2>&1; do
+ sleep 1
+ echo -n "."
+ done
+
+ rm -f $LOCK_FILE
+ success
+ echo
+}
+
+restart()
+{
+ stop
+ start
+}
+
+rtrn=0
+
+case "$1" in
+start)
+ start
+;;
+restart|reload|force-reload)
+ restart
+;;
+condrestart|try-restart)
+ if status $prog > /dev/null 2>&1; then
+ restart
+ fi
+;;
+status)
+ status $prog
+ rtrn=$?
+;;
+stop)
+ stop
+;;
+*)
+ echo "usage: $0 {start|stop|restart|reload|force-reload|condrestart|try-restart|status}"
+ rtrn=2
+;;
+esac
+
+exit $rtrn
diff --git a/init/corosync.service.in b/init/corosync.service.in
index 8cc692b..8a43ccf 100644
--- a/init/corosync.service.in
+++ b/init/corosync.service.in
@@ -1,12 +1,13 @@
[Unit]
Description=Corosync Cluster Engine
ConditionKernelCommandLine=!nocluster
-#Conflicts=cman.service
+Requires=network.target
+After=network.target
[Service]
-ExecStart=@SBINDIR@/corosync
+ExecStart=@INITWRAPPERSDIR@/corosync start
+ExecStop=@INITWRAPPERSDIR@/corosync stop
Type=forking
-#RestartSec=90s
[Install]
WantedBy=multi-user.target
diff --git a/init/generic.in b/init/generic.in
deleted file mode 100755
index 1ce26f0..0000000
--- a/init/generic.in
+++ /dev/null
@@ -1,184 +0,0 @@
-#!/bin/bash
-
-# Authors:
-# Andrew Beekhof <abeekhof@xxxxxxxxxx>
-# Fabio M. Di Nitto <fdinitto@xxxxxxxxxx>
-#
-# License: Revised BSD
-
-# chkconfig: - 20 80
-# description: Corosync Cluster Engine
-# processname: corosync
-#
-### BEGIN INIT INFO
-# Provides: corosync
-# Required-Start: $network $syslog
-# Required-Stop: $network $syslog
-# Default-Start:
-# Default-Stop:
-# Short-Description: Starts and stops Corosync Cluster Engine.
-# Description: Starts and stops Corosync Cluster Engine.
-### END INIT INFO
-
-desc="Corosync Cluster Engine"
-prog="corosync"
-
-# set secure PATH
-PATH="/sbin:/bin:/usr/sbin:/usr/bin:@SBINDIR@"
-
-success()
-{
- echo -ne "[ OK ]\r"
-}
-
-failure()
-{
- echo -ne "[FAILED]\r"
-}
-
-status()
-{
- pid=$(pidof $1 2>/dev/null)
- rtrn=$?
- if [ $rtrn -ne 0 ]; then
- echo "$1 is stopped"
- else
- echo "$1 (pid $pid) is running..."
- fi
- return $rtrn
-}
-
-# rpm based distros
-if [ -d @SYSCONFDIR@/sysconfig ]; then
- [ -f @INITDDIR@/functions ] && . @INITDDIR@/functions
- [ -f @SYSCONFDIR@/sysconfig/$prog ] && . @SYSCONFDIR@/sysconfig/$prog
- [ -z "$LOCK_FILE" ] && LOCK_FILE="@LOCALSTATEDIR@/lock/subsys/$prog"
-fi
-
-# deb based distros
-if [ -d @SYSCONFDIR@/default ]; then
- [ -f @SYSCONFDIR@/default/$prog ] && . @SYSCONFDIR@/default/$prog
- [ -z "$LOCK_FILE" ] && LOCK_FILE="@LOCALSTATEDIR@/lock/$prog"
-fi
-
-# The version of __pids_pidof in /etc/init.d/functions calls pidof with -x
-# This means it matches scripts, including this one.
-# Redefine it here so that status (from the same file) works.
-# Otherwise simultaneous calls to stop() will loop forever
-__pids_pidof() {
- pidof -c -o $$ -o $PPID -o %PPID "$1" || \
- pidof -c -o $$ -o $PPID -o %PPID "${1##*/}"
-}
-
-cluster_disabled_at_boot()
-{
- if grep -q nocluster /proc/cmdline && \
- [ "$(tty)" = "/dev/console" ]; then
- echo -e "not configured to run at boot"
- failure
- return 1
- fi
- return 0
-}
-
-start()
-{
- echo -n "Starting $desc ($prog): "
-
- ! cluster_disabled_at_boot && return
-
- # most recent distributions use tmpfs for @LOCALSTATEDIR@/run
- # to avoid to clean it up on every boot.
- # they also assume that init scripts will create
- # required subdirectories for proper operations
- mkdir -p @LOCALSTATEDIR@/run
-
- if status $prog > /dev/null 2>&1; then
- success
- else
- $prog > /dev/null 2>&1
-
- # give it time to fail
- sleep 2
- if status $prog > /dev/null 2>&1; then
- touch $LOCK_FILE
- success
- else
- failure
- rtrn=1
- fi
- fi
- echo
-}
-
-executed_by_cman()
-{
- [ -f @LOCALSTATEDIR@/run/cman.pid ] || return 0
-
- read cman_pid foo < @LOCALSTATEDIR@/run/cman.pid
- if [ "$(pidof $prog)" == "$cman_pid" ];then
- echo -n "$desc was executed by cman"
- failure
- echo
- return 1
- fi
-
- return 0
-}
-
-stop()
-{
- ! status $prog > /dev/null 2>&1 && return
-
- ! executed_by_cman && return
-
- echo -n "Signaling $desc ($prog) to terminate: "
- kill -TERM $(pidof $prog) > /dev/null 2>&1
- success
- echo
-
- echo -n "Waiting for $prog services to unload:"
- while status $prog > /dev/null 2>&1; do
- sleep 1
- echo -n "."
- done
-
- rm -f $LOCK_FILE
- success
- echo
-}
-
-restart()
-{
- stop
- start
-}
-
-rtrn=0
-
-case "$1" in
-start)
- start
-;;
-restart|reload|force-reload)
- restart
-;;
-condrestart|try-restart)
- if status $prog > /dev/null 2>&1; then
- restart
- fi
-;;
-status)
- status $prog
- rtrn=$?
-;;
-stop)
- stop
-;;
-*)
- echo "usage: $0 {start|stop|restart|reload|force-reload|condrestart|try-restart|status}"
- rtrn=2
-;;
-esac
-
-exit $rtrn
diff --git a/init/notifyd.in b/init/notifyd.in
deleted file mode 100755
index 84de9ae..0000000
--- a/init/notifyd.in
+++ /dev/null
@@ -1,153 +0,0 @@
-#!/bin/bash
-
-# Authors:
-# Angus Salkeld <asalkeld@xxxxxxxxxx>
-#
-# License: Revised BSD
-
-# chkconfig: - 23 77
-# description: Corosync Dbus and snmp notifier
-# processname: corosync-notifyd
-#
-### BEGIN INIT INFO
-# Provides: corosync-notifyd
-# Required-Start: $corosync $cman
-# Required-Stop: $corosync $cman
-# Default-Start:
-# Default-Stop:
-# Short-Description: Starts and stops Corosync Notifier.
-# Description: Starts and stops Corosync Notifier.
-### END INIT INFO
-
-desc="Corosync Notifier"
-prog="corosync-notifyd"
-
-# set secure PATH
-PATH="/sbin:/bin:/usr/sbin:/usr/bin:@SBINDIR@"
-
-success()
-{
- echo -ne "[ OK ]\r"
-}
-
-failure()
-{
- echo -ne "[FAILED]\r"
-}
-
-status()
-{
- pid=$(pidof $1 2>/dev/null)
- rtrn=$?
- if [ $rtrn -ne 0 ]; then
- echo "$1 is stopped"
- else
- echo "$1 (pid $pid) is running..."
- fi
- return $rtrn
-}
-
-# rpm based distros
-if [ -d @SYSCONFDIR@/sysconfig ]; then
- [ -f @INITDDIR@/functions ] && . @INITDDIR@/functions
- [ -f @SYSCONFDIR@/sysconfig/$prog ] && . @SYSCONFDIR@/sysconfig/$prog
- [ -z "$LOCK_FILE" ] && LOCK_FILE="@LOCALSTATEDIR@/lock/subsys/$prog"
-fi
-
-# deb based distros
-if [ -d @SYSCONFDIR@/default ]; then
- [ -f @SYSCONFDIR@/default/$prog ] && . @SYSCONFDIR@/default/$prog
- [ -z "$LOCK_FILE" ] && LOCK_FILE="@LOCALSTATEDIR@/lock/$prog"
-fi
-
-# The version of __pids_pidof in /etc/init.d/functions calls pidof with -x
-# This means it matches scripts, including this one.
-# Redefine it here so that status (from the same file) works.
-# Otherwise simultaneous calls to stop() will loop forever
-__pids_pidof() {
- pidof -c -o $$ -o $PPID -o %PPID "$1" || \
- pidof -c -o $$ -o $PPID -o %PPID "${1##*/}"
-}
-
-start()
-{
- echo -n "Starting $desc ($prog): "
-
- # most recent distributions use tmpfs for @LOCALSTATEDIR@/run
- # to avoid to clean it up on every boot.
- # they also assume that init scripts will create
- # required subdirectories for proper operations
- mkdir -p @LOCALSTATEDIR@/run
-
- if status $prog > /dev/null 2>&1; then
- success
- else
- $prog $OPTIONS > /dev/null 2>&1
-
- # give it time to fail
- sleep 2
- if status $prog > /dev/null 2>&1; then
- touch $LOCK_FILE
- success
- else
- failure
- rtrn=1
- fi
- fi
- echo
-}
-
-stop()
-{
- ! status $prog > /dev/null 2>&1 && return
-
- echo -n "Signaling $desc ($prog) to terminate: "
- kill -TERM $(pidof $prog) > /dev/null 2>&1
- success
- echo
-
- echo -n "Waiting for $prog services to unload:"
- while status $prog > /dev/null 2>&1; do
- sleep 1
- echo -n "."
- done
-
- rm -f $LOCK_FILE
- success
- echo
-}
-
-restart()
-{
- stop
- start
-}
-
-rtrn=0
-
-case "$1" in
-start)
- start
-;;
-restart|reload|force-reload)
- restart
-;;
-condrestart|try-restart)
- if status $prog > /dev/null 2>&1; then
- restart
- fi
-;;
-status)
- status $prog
- rtrn=$?
-;;
-stop)
- stop
-;;
-*)
- echo "usage: $0 {start|stop|restart|reload|force-reload|condrestart|try-restart|status}"
- rtrn=2
-;;
-esac
-
-exit $rtrn