Na některých linuxech (např. Centos a RH), /etc/rc.local
je zpočátku pouze symbolický odkaz na /etc/rc.d/rc.local
. V těchto systémech, pokud je symbolický odkaz přerušen, a /etc/rc.local
je samostatný soubor, pak se změní na /etc/rc.local
nebude vidět při bootování -- proces bootování spustí verzi v /etc/rc.d
. (Budou fungovat, pokud jeden spustí /etc/rc.local
ručně, ale nebude spuštěn při spouštění.)
Zní to jako v systému dimadima, jsou to samostatné soubory, ale /etc/rc.d/rc.local
volání /etc/rc.local
Symbolický odkaz z /etc/rc.local
na 'skutečný' v /etc/rc.d
se může ztratit, pokud se posunete o rc.local
do záložního adresáře a zkopíruje jej zpět nebo jej vytvoří od začátku, aniž by si uvědomil původní v /etc
byl jen symbolický odkaz.
V tomto příkladu skriptu rc.local používám přesměrování io hned na prvním řádku spuštění na můj vlastní soubor protokolu:
#!/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
V Ubuntu jsem si všiml, že jsou 2 soubory. Skutečná je /etc/init.d/rc.local
; zdá se, že druhý /etc/rc.local
je falešný?
Jakmile jsem upravil ten správný (/etc/init.d/rc.local
) se provedlo přesně podle očekávání.
Skončil jsem u upstart, který funguje dobře.