#
# svscan svscan (scan and run services)
#
-# chkconfig: 345 66 45
+# chkconfig: 345 14 89
#
# description: svscan (scan and run services) is a server part of the daemontools suite.
#
-# id: $Id$
+# $Id$
#
# Source function library
[ -f /etc/sysconfig/svscan ] && . /etc/sysconfig/svscan
# Check that networking is up.
-if is_no "${NETWORKING}"; then
- msg_Network_Down svscan
- exit 1
+if is_yes "${NETWORKING}"; then
+ if [ ! -f /var/lock/subsys/network -a "$1" != stop -a "$1" != status ]; then
+ msg_network_down svscan
+ exit 1
+ fi
+else
+ exit 0
fi
-
-# 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; busy
+ msg_starting svscan;
+ busy
# we can't get status report from background job
- # but we can only do simple file check
+ # but we can only do simple file check
if [ -w $SVSCAN_DIR ]; then
- svscan $SVSCAN_DIR &
- ok
- RETVAL=0
+ daemon --fork /usr/sbin/svscan $SVSCAN_DIR
+ RETVAL=$?
else
fail
- echo "Missing service directory!"
- echo "Create $SVSCAN_DIR first."
- RETVAL=1
- fi
+ echo $(nls "Missing service directory")'!'
+ nls "Create %s first." "$SVSCAN_DIR"
+ RETVAL=1
+ fi
[ $RETVAL -eq 0 ] && touch /var/lock/subsys/svscan
else
- msg_Already_Running svscan
+ msg_already_running svscan
fi
- ;;
- stop)
- if [ -f /var/lock/subsys/svscan ]; then
+}
+
+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-)
+ svc=$(echo $SVSCAN_DIR/*)
+ if [ "$svc" != "$SVSCAN_DIR/*" ]; then
+ svc -d -x $SVSCAN_DIR/* \
+ $(find $SVSCAN_DIR/* -maxdepth 0 -follow -perm -1000 | sed -e 's-\$-/log-')
+ fi
rm -f /var/run/svscan.pid /var/lock/subsys/svscan >/dev/null 2>&1
else
- msg_Not_Running svscan
- exit 1
- fi
+ 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)
+ stop
+ start
+ ;;
+ try-restart)
+ condrestart 0
;;
- restart)
- $0 stop
- $0 start
+ force-reload)
+ condrestart 7
;;
status)
status svscan
exit $?
;;
*)
- msg_Usage "$0 {start|stop|status|restart}"
- exit 1
+ msg_usage "$0 {start|stop|restart|try-restart|force-reload|status}"
+ exit 3
esac
exit $RETVAL