Page suivante Page précédenteTable des matières

8. Annexe B. - fichier rc.0 - rc.6 complet

#! /bin/sh
#
# rc.6          Ce fichier est execute par init quand il passe au
#               runlevel (niveau d'execution) 0 (halt) ou runlevel 6
#               (redemarrage). Il tue tous les processus, demonte les
#               systemes de fichiers et soit stoppe soit redemarre.
#
# Version:      @(#)/etc/rc.d/rc.6      1.50    1994-01-15
#
# Author:       Miquel van Smoorenburg <miquels@drinkel.nl.mugnet.org>
# Modified by:  Patrick J. Volkerding, <volkerdi@ftp.cdrom.com>
# Modified by:  Michael A. Robinton, <michael@bzs.org> for RAID shutdown
 # Positionner le chemin.
 PATH=/sbin:/etc:/bin:/usr/bin
 # Mettre en mode saut de ligne pour eviter l'effet d'escalier.
 stty onlcr
 echo "Lancement du script d'extinction $0:"
 # Trouver comment nous sommes appeles.
 case "$0" in
 *0)
 message="Le systeme est stoppe."
 command="halt"
 ;;
 *6)
 message="Redemarrage."
 command=reboot
 ;;
 *)
 echo "$0: veuillez m'appeler en tant que \"rc.0\" or \"rc.6\" !"
 exit 1
 ;;
 esac
 # Tuer tous les processus.
 # INIT est sense s'occuper entierement de tout ceci, mais il n'a pas
 # toujours fonctionne correctement sans cette seconde passe de
 # tuerie de processus. Puisqu'INIT a déjà averti les utilisateurs
 # que les processus etaient tues, nous eviterons d'afficher cette
 # information cette fois-ci.
 if [ "$1" != "fast" ]; then # shutdown n'a pas encore tue tous les processus
 killall5 -15
 killall5 -9
 fi
 # Essayer d'arreter les quotas et la comptabilite.
 if [ -x /usr/sbin/quotaoff ]
 then
 echo "Arret des quotas."
 /usr/sbin/quotaoff -a
 fi
 if [ -x /sbin/accton ]
 then
 echo "Arret de la comptabilite."
 /sbin/accton
 fi
 # Avant de demonter les systemes de fichiers ecrire un
 # enregistrement reboot ou halt dans wtmp.
 $command -w
 # Sauvegarde de l'heure locale
 [ -e /usr/lib/zoneinfo/localtime ] && cp /usr/lib/zoneinfo/localtime /etc
 # Demontage asynchrone de tout systeme de fichiers distant
 echo "Demontage des systemes de fichiers distants."
 umount -a -tnfs &
 # vous devez avoir lance
 # 'cat /proc/mdstat | grep md0> {your boot vol}/linux/raidgood.ref'
 # avant que linuxrc s'execute proprement avec cette information
 RAIDSTATUS=`/bin/cat /proc/mdstat | /usr/bin/grep md0 # capture raid status`
 # Arret de la swap, puis demontage des systemes de fichiers locaux.
 # effacement de mdtab par la meme occasion
 echo "Arret de la swap."
 swapoff -a
 echo "Demontage des systemes de fichiers locaux."
 umount -a -tnonfs
 # Ne pas remonter les volumes UMSDOS racine :
 if [ ! "`mount | head -1 | cut -d ' ' -f 5`" = "umsdos" ]; then
 mount -n -o remount,ro /
 fi
 # le peripherique racine reste monte
 # monter les systemes de fichiers DOS en lecture/ecriture
 echo "Ecriture des drapeaux RAID de demarrage en lecture seule."
 mount -n /dosa
 mount -n /dosc
 # creation du drapeau RAID monte en lecture seule en double
 # contenant l'etat a l'extinction de la matrice RAID
 echo ${RAIDSTATUS}> /dosa/linux/raidstat.ro
 echo ${RAIDSTATUS}> /dosc/linux/raidstat.ro
 umount -n /dosa
 umount -n /dosc
 # Arreter toutes les matrices RAID (sauf la racine)
 echo "Arret du RAID"
 mdstop -a
 # Voir si c'est une situation de coupure de courant.
 if [ -f /etc/power_is_failing ]; then
 echo "Extinction de l'UPS, a+."
 /sbin/powerd -q
 exit 1
 fi
 # Maintenant arret ou redemarrage.
 echo "$message"
 [ ! -f /etc/fastboot ] && echo "Au prochain demarrage fsck sera FORCE."
 $command -f


Page suivante Page précédenteTable des matières