2.7.1 Il comando service

Lo script di gestione di un daemon può essere lanciato per mezzo del comando service, che è uno script di shell, il cui codice è analogo a quello riportato di seguito.

#!/bin/sh
# Set up a default search path.
PATH="/sbin:/usr/sbin:/bin:/usr/bin:/usr/X11R6/bin"
export PATH
VERSION="`basename $0` ver. 0.91"
USAGE="Usage: `basename $0` < option > | --status-all | \
[ service_name [ command | --full-restart ] ]"
SERVICE=
SERVICEDIR="/etc/init.d"
OPTIONS=
if [ $# -eq 0 ]; then
echo $"${USAGE}" >&2
exit 1
fi
cd /
while [ $# -gt 0 ]; do
case "${1}" in
 --help | -h | --h* )
   echo $"${USAGE}" >&2
   exit 0
   ;;
 --version | -V )
   echo $"${VERSION}" >&2
   exit 0
   ;;
 *)
   if [ -z "${SERVICE}" -a $# -eq 1 -a "${1}" = "--status-all" ]; then
      cd ${SERVICEDIR}
      for SERVICE in * ; do
        case "${SERVICE}" in
          functions | halt | killall | single| linuxconf| kudzu | \
             *rpmorig | *rpmnew | *rpmsave | *~ | *.orig)
             ;;
          *)
           if [ -x "${SERVICEDIR}/${SERVICE}" ]; then
             env -i LANG=$LANG PATH=$PATH TERM=$TERM "${SERVICEDIR}/${SERVICE}" status
           fi
           ;;
        esac
      done
      exit 0
   elif [ $# -eq 2 -a "${2}" = "--full-restart" ]; then
      SERVICE="${1}"
      if [ -x "${SERVICEDIR}/${SERVICE}" ]; then
        env -i LANG=$LANG PATH=$PATH TERM=$TERM "${SERVICEDIR}/${SERVICE}" stop
        env -i LANG=$LANG PATH=$PATH TERM=$TERM "${SERVICEDIR}/${SERVICE}" start
        exit $?
      fi
   elif [ -z "${SERVICE}" ]; then
     SERVICE="${1}"
                                                                        
                                                                        
   else
     OPTIONS="${OPTIONS} ${1}"
   fi
   shift
   ;;
esac
done
if [ -x "${SERVICEDIR}/${SERVICE}" ]; then
env -i LANG=$LANG PATH=$PATH TERM=$TERM "${SERVICEDIR}/${SERVICE}" ${OPTIONS}
else
echo $"${SERVICE}: unrecognized service" >&2
exit 1
fi
Esso non fa altro che richiamare lo script passato come primo parametro, cercandolo nella directory /etc/init.d e passargli le opzioni indicate come parametri successivi. Ad esempio, per avviare il daemon httpd si può impartire il comando

 
# service httpd start  
ed analogamente per fermarlo

 
# service httpd stop  
Inoltre, è possibile specificare come parametro -h o --help per far visualizzare un aiuto sommario di service. In particolare, indicando l’opzione --status-all viene visualizzato sullo schermo lo stato di tutti i servizi.