From 551e0470a24753e2d8c44dcd897f4c2b27590992 Mon Sep 17 00:00:00 2001 From: don Date: Mon, 21 Sep 2009 00:08:58 +0000 Subject: [PATCH] * update unscd.init --- debian/unscd.init | 126 ++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 126 insertions(+) create mode 100755 debian/unscd.init diff --git a/debian/unscd.init b/debian/unscd.init new file mode 100755 index 0000000..dd03529 --- /dev/null +++ b/debian/unscd.init @@ -0,0 +1,126 @@ +#!/bin/sh +### BEGIN INIT INFO +# Provides: unscd nscd +# Required-Start: $remote_fs +# Required-Stop: $remote_fs +# Default-Start: 2 3 4 5 +# Default-Stop: 0 1 6 +# Short-Description: Starts the Micro Name Service Cache Daemon +### END INIT INFO + +# +# unscd: Starts the Micro Name Service Cache Daemon +# +# description: This is a daemon which handles passwd and group lookups +# for running programs and caches the results for the next +# query. You should start this daemon only if you use +# slow Services like NIS or NIS+ + +# Sanity checks. + +NAME="unscd" +DESC="Micro Name Service Cache Daemon" +DAEMON="/usr/sbin/nscd" +PIDFILE="/var/run/nscd/nscd.pid" + +# Sanity checks. +umask 022 +[ -f /etc/nscd.conf ] || exit 0 +[ -x "$DAEMON" ] || exit 0 +[ -d /var/run/nscd ] || mkdir -p /var/run/nscd +. /lib/lsb/init-functions + +start_unscd() +{ + # Return + # 0 if daemon has been started + # 1 if daemon was already running + # 2 if daemon could not be started + start-stop-daemon --start --quiet --pidfile "$PIDFILE" --exec "$DAEMON" --test > /dev/null || return 1 + start-stop-daemon --start --quiet --pidfile "$PIDFILE" --exec "$DAEMON" || return 2 +} + +stop_unscd() +{ + # Return + # 0 if daemon has been stopped + # 1 if daemon was already stopped + # 2 if daemon could not be stopped + + # we try to stop using unscd --shutdown, that fails also if unscd is not present. + # in that case, fallback to "good old methods" + RETVAL=0 + if ! $DAEMON --shutdown; then + start-stop-daemon --stop --quiet --pidfile "$PIDFILE" --name "$NAME" --test > /dev/null + RETVAL="$?" + [ "$?" -ne 0 -a "$?" -ne 1 ] && return 2 + fi + + # Wait for children to finish too + start-stop-daemon --stop --quiet --oknodo --retry=0/30/KILL/5 --exec "$DAEMON" > /dev/null + [ "$?" -ne 0 -a "$?" -ne 1 ] && return 2 + rm -f "$PIDFILE" + return "$RETVAL" +} + +status() +{ + # Return + # 0 if daemon is stopped + # 1 if daemon is running + start-stop-daemon --start --quiet --pidfile "$PIDFILE" --exec "$DAEMON" --test > /dev/null || return 1 + return 0 +} + +case "$1" in +start) + log_daemon_msg "Starting $DESC" "$NAME" + start_unscd + case "$?" in + 0) log_end_msg 0 ; exit 0 ;; + 1) log_warning_msg " (already running)." ; exit 0 ;; + *) log_end_msg 1 ; exit 1 ;; + esac + ;; +stop) + log_daemon_msg "Stopping $DESC" "$NAME" + stop_unscd + case "$?" in + 0) log_end_msg 0 ; exit 0 ;; + 1) log_warning_msg " (not running)." ; exit 0 ;; + *) log_end_msg 1 ; exit 1 ;; + esac + ;; +restart|force-reload|reload) + log_daemon_msg "Restarting $DESC" "$NAME" + stop_unscd + $DAEMON --invalidate passwd --invalidate group --invalidate hosts + case "$?" in + 0|1) + start_unscd + case "$?" in + 0) log_end_msg 0 ; exit 0 ;; + 1) log_failure_msg " (failed -- old process is still running)." ; exit 1 ;; + *) log_failure_msg " (failed to start)." ; exit 1 ;; + esac + ;; + *) + log_failure_msg " (failed to stop)." + exit 1 + ;; + esac + ;; +status) + log_daemon_msg "Status of $DESC service: " + status + case "$?" in + 0) log_failure_msg "not running." ; exit 1 ;; + 1) log_success_msg "running." ; exit 0 ;; + esac + ;; +*) + echo "Usage: /etc/init.d/$NAME {start|stop|reload|force-reload|restart|status}" >&2 + exit 1 + ;; +esac + -- 2.39.2