<div class="post-content" lang="fr">
		
<p class="spip">Il existe deux méthodes pour une commande simple.<br>
Par exemple vous voulez synchroniser l’heure et la date du système au démarrage.<br>
La commande est <code class='spip_code' dir='ltr'>ntpdate le_serveur_de_temps</code> ou encore <code class='spip_code' dir='ltr'>/usr/sbin/ntpdate le_serveur_de_temps</code> si le PATH n’est pas réglé<br>
<br>
1) méthode simple :
ajouter la ligne <code class='spip_code' dir='ltr'>/usr/sbin/ntpdate le_serveur_de_temps</code> à la fin du fichier <code class='spip_code' dir='ltr'>/etc/rc.d/rc.local</code></p>

<p class="spip">2) méthode plus complexe respectant le standard system V :
Créer un script dans le répertoire <code class='spip_code' dir='ltr'>/etc/init.d</code><br>
Pour faire simple, reprenons un script existant dans le répertoire, par exemple <code class='spip_code' dir='ltr'>reboot</code><br></p>

<pre># ! /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
<p class="spip">PATH=/sbin :/usr/sbin :/bin :/usr/bin</p>

<p class="spip">. /lib/lsb/init-functions</p>

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

<p class="spip">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</p>
</pre>
<p class="spip">On le copie<br>
<code class='spip_code' dir='ltr'>cp /etc/init.d/reboot /etc/init.d/monscript</code><br>
On adapte le script<br>
<br></p>

<pre>### 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
<p class="spip">PATH=/sbin :/usr/sbin :/bin :/usr/bin</p>

<p class="spip">. /lib/lsb/init-functions</p>

<p class="spip">do_start () <i class="spip">
        # 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
</i></p>

<p class="spip">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</p>
</pre>
<p class="spip">On vérifie que le fichier <code class='spip_code' dir='ltr'>monscript</code> à les mêmes droits que les autres :<br></p>

<p class="spip"><code class='spip_code' dir='ltr'>chmod 755 /etc/init.d/monscript</code><br>
On teste que le script fonctionne bien :<br>
<code class='spip_code' dir='ltr'>/etc/init.d/monscript start</code><br>
<br>
Il reste maintenant à le l’exécuter à chaque démarrage de la machine.<br>
On choisi un niveau d’exécution dans lequel on va l’utiliser.<br>
En règle générale soit : level 3 (mode texte) soit level 5 (mode graphique).<br>
On choisit le run level 3.<br>
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.<br></p>

<p class="spip">(il va de soi que si la commande placée dans le script <code class='spip_code' dir='ltr'>monscript</code> se sert du service réseau, celui-ci doit être lancé après que le réseau soit actif)
<code class='spip_code' dir='ltr'>ln -s /etc/init.d/monscript /etc/rc3.d/S98monscript</code><br>
<br>
<ins>Autres pistes :</ins><br></p>

<ul>
<li>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</li>
<li>Sur une Debian, pour faire un script complexe il existe un gabarit : le fichier <code class='spip_code' dir='ltr'>skeleton</code> présent dans le répertoire <code class='spip_code' dir='ltr'>/etc/init.d</code><br></li>
</ul>		</div>