Auf einigen Linux-Systemen (z. B. Centos &RH) /etc/rc.local
ist zunächst nur ein symbolischer Link auf /etc/rc.d/rc.local
. Auf diesen Systemen, wenn der symbolische Link unterbrochen ist, und /etc/rc.local
ist eine separate Datei, ändert sich dann zu /etc/rc.local
wird beim Booten nicht gesehen -- der Bootvorgang führt die Version in /etc/rc.d
aus . (Sie funktionieren, wenn man /etc/rc.local
ausführt manuell, wird aber beim Booten nicht ausgeführt.)
Klingt wie auf dem System von dimadima, das sind separate Dateien, aber /etc/rc.d/rc.local
ruft /etc/rc.local
auf
Der symbolische Link von /etc/rc.local
zum 'echten' in /etc/rc.d
kann verloren gehen, wenn man rc.local
bewegt in ein Backup-Verzeichnis und kopiert es zurück oder erstellt es von Grund auf neu, ohne das Original in /etc
zu erkennen war nur ein symbolischer Link.
In diesem Beispiel eines rc.local-Skripts verwende ich die io-Umleitung in der allerersten Ausführungszeile zu meiner eigenen Protokolldatei:
#!/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 ist mir aufgefallen, dass es 2 Dateien gibt. Der echte ist /etc/init.d/rc.local
; es scheint der andere /etc/rc.local
ist falsch?
Sobald ich die richtige geändert habe (/etc/init.d/rc.local
) es wurde wie erwartet ausgeführt.
Am Ende landete ich bei Emporkömmling, was gut funktioniert.