#!/bin/sh ## Script basique donné à titre d'exemple et destiné à montrer comment fonctionne un ## script de démarrage. ## On pourrait utiliser la commande start-stop-daemon comme dans le script initial ## d'apache mais cela sortirait du cadre de cet article ;). ## On précise tout d'abord que c'est un script écrit en shell avec la ligne ci-dessus ## /etc/init.d/apache _ exemple: démarre et arrête le service apache## On définit la valeur de quelques variables avant de commencer le script proprement dit. # Répertoires contenant de nombreux programmes exécutables PATH=/bin:/usr/bin:/sbin:/usr/sbin # Chemin vers le programme qui démarrera Apache DAEMON=/usr/sbin/apache # Optionnel : définit le nom et la description qui s'afficheront lors du démarrage ou de # l'arrêt du script NAME=apache DESC="Webserver" ## Début du script proprement dit # On vérifie tout d'abord que le programme apachectl est exécutable, sinon fin du script test -x $ DAEMON || exit 0# Suivant l'argument que l'on va ajouter après le nom du script, on va définir différentes # possibilités aux script grâce à l'instruction case case " $ 1" in# si on tape # /etc/init.d/apache _ exemple start, les instructions qui suivent vont être# exécutées start) # Affiche : « Starting Webserver: apache » # $ DESC et $ NAME sont bien entendu les variables que l'on a défini plus hautecho -n "Starting $ DESC: $ NAME"# Lance le serveur web Apache apache & >& /dev/nullecho "." ;; # Fin des instructions si on met l'argument start après le nom du script # si on tape # /etc/init.d/apache _ exemple stop, les instructions suivantes vont être# exécutées stop) # Affiche : « Stopping Webserver: apache » echo -n "Stopping $ DESC: $ NAME"# Tue tous les processus portant le nom « apache » sauvagement (« -9 ») et n'affiche # pas le résultat (« /dev/null ») killall -9 apache > & /dev/nullecho "." ;; # Fin des instructions si on met l'argument stop après le nom du script # si on tape /etc/init.d/apache _ exemple restart, les instructions suivantes vont être# exécutées restart) # Affiche : « Restarting Webserver: apache» echo -n "Restarting $ DESC: $ NAME"# Vérifie si le processus apache est déjà lancé ou non if [ -z " $ (ps ax | egrep apache)" ]; then# Si il n'est pas lancé alors on affiche : « Apache isn't running, so not killed » echo " Apache isn't running, so not killed" ; else # Sinon on tue tous les processus portant le nom apache comme décrit précédemment killall -9 apache > & /dev/null ;fi # Attente d'une seconde avant de continuer le script sleep 1 # Enfin on démarre le serveur apache apache > & /dev/nullecho "." ;; # Si on tape # /etc/init.d/apache alors le script affichera les différents arguments que # l'on peut donner au script * )echo "Usage: /etc/init.d/ $ NAME start|stop|restart" >& 2exit 1 ;; esac exit 0 # Fin du script ! |
_
exemple, il ne vous reste plus qu'à le rendre exécutable. Pour cela, vous pouvez
procéder de deux manières qui aboutissent exactement au même résultat dans ce cas-là :_
exemple_
exemple_
exemple start_
exemple stop_
exemple au démarrage dans un runlevel
particulier tel que décrit plus haut._
exemple defaults 20_
exemple ..._
exemple -> ../init.d/apache_
exemple_
exemple -> ../init.d/apache_
exemple_
exemple -> ../init.d/apache_
exemple_
exemple -> ../init.d/apache_
exemple_
exemple -> ../init.d/apache_
exemple_
exemple -> ../init.d/apache_
exemple_
exemple -> ../init.d/apache_
exemple_
exemple start 20 5 . stop 40 6 ._
exemple ..._
exemple -> ../init.d/apache_
exemple_
exemple -> ../init.d/apache_
exemple_
exemple ne sera pas lier dans les répertoires
destiné à l'arrêt du système (notez le point à la fin de la commande) :_
exemple start 20 2 3 4 5 ._
exemple ..._
exemple -> ../init.d/apache_
exemple_
exemple -> ../init.d/apache_
exemple_
exemple -> ../init.d/apache_
exemple_
exemple -> ../init.d/apache_
exemple_
exemple_
exemple remove_
exemple removeThis document was translated from LATEX by HEVEA.