#
# description: svscan (scan and run services) is a server part of the daemontools suite.
#
-# id: $Id$
+# $Id$
#
# Source function library
exit 0
fi
-RETVAL=0
-# See how we were called.
-case "$1" in
- start)
+start() {
# Check if the service is already running?
if [ ! -f /var/lock/subsys/svscan ]; then
- msg_starting svscan;
+ msg_starting svscan
busy
# we can't get status report from background job
# but we can only do simple file check
if [ -w $SVSCAN_DIR ]; then
- daemon --fork svscan $SVSCAN_DIR
+ daemon --fork /usr/sbin/svscan $SVSCAN_DIR
RETVAL=$?
else
fail
- echo $(nls "Missing service directory")'!'
- nls "Create %s first." "$SVSCAN_DIR"
+ nls "Missing service directory. Create %s first." "$SVSCAN_DIR"
RETVAL=1
fi
[ $RETVAL -eq 0 ] && touch /var/lock/subsys/svscan
else
msg_already_running svscan
fi
- ;;
- stop)
+}
+
+stop() {
if [ -f /var/lock/subsys/svscan ]; then
msg_stopping svscan
killproc svscan
- svc -d -x $SVSCAN_DIR/* \
- $(find $SVSCAN_DIR/* -maxdepth 0 -follow -perm -1000|sed s-\$-/log-)
+ for s in $SVSCAN_DIR/{,*/}*/run; do
+ if [ -x "$s" ]; then
+ svc="$svc ${s%/run}"
+ fi
+ done
+ if [ "$svc" ]; then
+ svc -d -x $svc
+ fi
rm -f /var/run/svscan.pid /var/lock/subsys/svscan >/dev/null 2>&1
else
msg_not_running svscan
fi
+}
+
+condrestart() {
+ if [ -f /var/lock/subsys/svscan ]; then
+ stop
+ start
+ else
+ msg_not_running svscan
+ RETVAL=$1
+ fi
+}
+
+RETVAL=0
+# See how we were called.
+case "$1" in
+ start)
+ start
+ ;;
+ stop)
+ stop
;;
restart|force-reload)
- $0 stop
- $0 start
- exit $?
+ stop
+ start
+ ;;
+ try-restart)
+ condrestart 0
+ ;;
+ force-reload)
+ condrestart 7
;;
status)
status svscan
- exit $?
+ RETVAL=$?
+ svstat $SVSCAN_DIR/*
+ RETVAL=$(($RETVAL + $?))
;;
*)
- msg_usage "$0 {start|stop|restart|force-reload|status}"
+ msg_usage "$0 {start|stop|restart|try-restart|force-reload|status}"
exit 3
esac