Sur certains Linux (Centos &RH, par exemple), /etc/rc.local
est initialement juste un lien symbolique vers /etc/rc.d/rc.local
. Sur ces systèmes, si le lien symbolique est rompu, et /etc/rc.local
est un fichier séparé, puis passe à /etc/rc.local
ne sera pas visible au démarrage -- le processus de démarrage exécutera la version en /etc/rc.d
. (Ils fonctionneront si l'on exécute /etc/rc.local
manuellement, mais ne sera pas exécuté au démarrage.)
On dirait que sur le système de dimadima, ce sont des fichiers séparés, mais /etc/rc.d/rc.local
appelle /etc/rc.local
Le lien symbolique de /etc/rc.local
au "vrai" en /etc/rc.d
peut se perdre si on bouge rc.local
dans un répertoire de sauvegarde et le recopie ou le crée à partir de zéro, sans se rendre compte de l'original dans /etc
n'était qu'un lien symbolique.
Dans cet exemple de script rc.local, j'utilise la redirection io à la toute première ligne d'exécution vers mon propre fichier journal :
#!/bin/sh -e
#
# rc.local
#
# This script is executed at the end of each multiuser runlevel.
# Make sure that the script will "exit 0" on success or any other
# value on error.
#
# In order to enable or disable this script just change the execution
# bits.
#
# By default this script does nothing.
exec 1>/tmp/rc.local.log 2>&1 # send stdout and stderr from rc.local to a log file
set -x # tell sh to display commands before execution
/opt/stuff/somefancy.error.script.sh
exit 0
Dans Ubuntu, j'ai remarqué qu'il y avait 2 fichiers. Le vrai est /etc/init.d/rc.local
; il semble que l'autre /etc/rc.local
est faux ?
Une fois que j'ai modifié le bon (/etc/init.d/rc.local
) il s'est exécuté comme prévu.
Je me suis retrouvé avec parvenu, ce qui fonctionne bien.