Su alcuni Linux (Centos e RH, ad esempio), /etc/rc.local
è inizialmente solo un collegamento simbolico a /etc/rc.d/rc.local
. Su quei sistemi, se il collegamento simbolico è interrotto, e /etc/rc.local
è un file separato, quindi cambia in /etc/rc.local
non verrà visualizzato all'avvio:il processo di avvio eseguirà la versione in /etc/rc.d
. (Funzioneranno se si esegue /etc/rc.local
manualmente, ma non verrà eseguito all'avvio.)
Suona come sul sistema dimadima, sono file separati, ma /etc/rc.d/rc.local
chiama /etc/rc.local
Il collegamento simbolico da /etc/rc.local
a quello "reale" in /etc/rc.d
può perdersi se si sposta rc.local
in una directory di backup e lo copia di nuovo o lo crea da zero, non realizzando quello originale in /etc
era solo un collegamento simbolico.
In questo esempio di script rc.local utilizzo il reindirizzamento io alla primissima riga di esecuzione sul mio file di registro:
#!/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
In Ubuntu ho notato che ci sono 2 file. Quello vero è /etc/init.d/rc.local
; sembra l'altro /etc/rc.local
è fasullo?
Una volta modificato quello corretto (/etc/init.d/rc.local
) è stato eseguito proprio come previsto.
Ho finito con upstart, che funziona bene.