Il existe deux méthodes pour une commande simple.

Par exemple vous voulez synchroniser l’heure et la date du système au démarrage.

La commande est ntpdate le_serveur_de_temps ou encore /usr/sbin/ntpdate le_serveur_de_temps si le PATH n’est pas réglé



1) méthode simple :
ajouter la ligne /usr/sbin/ntpdate le_serveur_de_temps à la fin du fichier /etc/rc.d/rc.local

2) méthode plus complexe respectant le standard system V :
Créer un script dans le répertoire /etc/init.d

Pour faire simple, reprenons un script existant dans le répertoire, par exemple reboot

# ! /bin/sh
### BEGIN INIT INFO
# Provides :          reboot
# Required-Start :
# Required-Stop :
# Should-Start :
# Default-Start :
# Default-Stop :      6
# Short-Description : Execute the reboot command.
# Description :
### END INIT INFO

PATH=/sbin :/usr/sbin :/bin :/usr/bin

. /lib/lsb/init-functions

do_stop () # Message should end with a newline since kFreeBSD may # print more stuff (see #323749) log_action_msg "Will now restart" reboot -d -f -i

case "$1" in start) # No-op  ;; restart|reload|force-reload) echo "Error : argument ’$1’ not supported" >&2 exit 3  ;; stop) do_stop  ;; *) echo "Usage : $0 start|stop" >&2 exit 3  ;; esac

On le copie

cp /etc/init.d/reboot /etc/init.d/monscript

On adapte le script


### BEGIN INIT INFO
# Provides :          reboot
# Required-Start :
# Required-Stop :
# Should-Start :
# Default-Start :
# Default-Stop :      6
# Short-Description : Execute the reboot command.
# Description :
### END INIT INFO

PATH=/sbin :/usr/sbin :/bin :/usr/bin

. /lib/lsb/init-functions

do_start () # Message should end with a newline since kFreeBSD may # print more stuff (see #323749) log_action_msg "NTP - Mise à jour de l’heure de la machine" ntpdate le_serveur_de_temps

case "$1" in start) # op do_start  ;; restart|reload|force-reload) echo "Error : argument ’$1’ not supported" >&2 exit 3  ;; stop) # no op  ;; *) echo "Usage : $0 start|stop" >&2 exit 3  ;; esac

On vérifie que le fichier monscript à les mêmes droits que les autres :

chmod 755 /etc/init.d/monscript

On teste que le script fonctionne bien :

/etc/init.d/monscript start



Il reste maintenant à le l’exécuter à chaque démarrage de la machine.

On choisi un niveau d’exécution dans lequel on va l’utiliser.

En règle générale soit : level 3 (mode texte) soit level 5 (mode graphique).

On choisit le run level 3.

Il faut faire un lien vers le script en question en prefixant par S+numerod’ordre dans /etc/rc.d/rc3.d
Le préfixe S comme Start et le numéro pour choisir l’ordre d’exécution par rapport aux autres scripts.

(il va de soi que si la commande placée dans le script monscript se sert du service réseau, celui-ci doit être lancé après que le réseau soit actif)
ln -s /etc/init.d/monscript /etc/rc3.d/S98monscript



Autres pistes :

  • Si vous voulez que votre script se lance à l’arrêt de la machine il faut faire un lien en prefixant par un K (comme Kill) dans rc0.d et rc6.d
  • Sur une Debian, pour faire un script complexe il existe un gabarit : le fichier skeleton présent dans le répertoire /etc/init.d