#!/bin/sh # $Id: service,v 1.2 2004/08/10 15:35:31 john Exp $ # service script for Debian. It uses invoke-rc.d to simulate the Red Hat # 'service' command. # Written by John Hasler, 2004 # You may treat this work as if it were in the public domain. # I waive all rights. # --status-all calls all scripts with "status". # --full-restart calls specified script with "stop" and then "start". VERSION="0.2" PATH=/bin:/usr/bin:/sbin:/usr/sbin INVOKERC="invoke-rc.d --force --quiet" INITDIR="/etc/init.d" USAGE="Usage: `basename $0` [[-h] | [--h] | [--help] | [-V] | [--version] | [--status-all]] | service-name action 'service-name' is one of the scripts in /etc/init.d. 'action' is one of stop, start, restart, status, reload, force-stop, force-reload, or --full-restart." cd "$INITDIR" # It's an error to have zero or more than two arguments. if [ $# -eq 0 ] || [ $# -gt 2 ] ; then echo "$USAGE" >&2 exit 1 fi # Handle single-argument cases. if [ $# -eq 1 ] ; then case "$1" in --version | -V ) echo $VERSION >&2 exit 0 ;; --help | -h | --h ) echo $"$USAGE" >&2 exit 0 ;; # --status-all calls all scripts with the 'status' command. --status-all ) # for SERVICE in * ; do # case "$SERVICE" in # # None of these are valid scripts. Skip them. # skeleton | README | *.dpkg-dist | *.dpkg-old | rc | rcS | single | reboot | bootclean.sh) # ;; # * ) # # Make sure the script is executable. # if [ -x "$SERVICE" ] ; then # $INVOKERC "$SERVICE" status # fi # ;; # esac # done echo "--status-all does nothing on Debian" >&2 exit 0 ;; * ) echo $"$USAGE" >&2 exit 1 ;; esac fi SERVICE="$1" ACTION="$2" # Make sure the service exists and is executable. if [ ! -x "$SERVICE" ] ; then echo "${SERVICE}: unrecognized service" >&2 exit 1 fi # Handle two argument cases. case "$ACTION" in stop | start | restart | status | reload | force-stop | force-reload ) $INVOKERC "$SERVICE" "$ACTION" && exit $? ;; --full-restart ) $INVOKERC "$SERVICE" stop || exit $? $INVOKERC "$SERVICE" start || exit $? exit 0 ;; * ) echo "${ACTION}: no such action" >&2 exit 1 ;; esac