init
Ich habe zu Lernzwecken mit einem LSB-Init-Skript unter Debian Wheezy herumgespielt ( stammt aus dem Sysvinit-Paket Version 2.88dsf-41+deb7u1). Mein Skript sieht folgendermaßen aus:
# cat /etc/init.d/test-script
#! /bin/sh
### BEGIN INIT INFO
# Provides: test
# Required-Start: $all
# Required-Stop: $all
# Default-Start: 2 3 4 5
# Default-Stop: 0 1 6
# Short-Description: test script
# Description: test script
### END INIT INFO
# always executes
touch /tmp/test-file
case "$1" in
start)
echo "Starting script test"
touch /tmp/test-file-start
;;
stop)
echo "Stopping script test"
touch /tmp/test-file-stop
;;
restart)
echo "Restarting script test"
touch /tmp/test-file-restart
;;
force-reload)
echo "Force-reloading script test"
touch /tmp/test-file-force-reload
;;
status)
echo "Status of test"
touch /tmp/test-file-status
;;
*)
echo "Usage: /etc/init.d/test {start|stop}"
exit 1
;;
esac
exit 0
#
Ich habe die /etc/init.d/test-script
Datei ausführbar gemacht und einen symbolischen Link zum /etc/rc2.d/
Verzeichnis hinzugefügt:
lrwxrwxrwx 1 root root 21 Nov 2 13:19 /etc/rc2.d/S04test-script -> ../init.d/test-script
..da mein Standard-Runlevel 2 ist, habe ich die Maschine neu geladen, aber das Skript wurde nicht gestartet. Als letzten Schritt habe ich auch test
die /etc/init.d/.depend.start
Datei hinzugefügt, aber /etc/init.d/test-script
sie wurde beim Booten immer noch nicht ausgeführt.
Welche zusätzlichen Schritte sind insserv
erforderlich, um ein Init-Skript zu installieren?
Antwort1
Fügt zusätzlich zu den symbolischen Links zu /etc/rc<runlevel>.d/
Verzeichnissen insserv
eine <script_name>:
Zeile zur /etc/init.d/.depend.start
Datei hinzu. Mein Fehler war, dass ich der Datei eine <boot_facility>:
Zeile hinzugefügt habe /etc/init.d/.depend.start
. Nehmen wir /etc/init.d/test-script
als Beispiel das folgende LSB-Header:
### BEGIN INIT INFO
# Provides: test
# Required-Start: $all
# Required-Stop: $all
# Default-Start: 2 3 4 5
# Default-Stop: 0 1 6
# Short-Description: test script
# Description: test script
### END INIT INFO
test-script:
..dann muss man Zeile zu Zeile hinzufügen , /etc/init.d/.depend.start
nicht die test:
Zeile.
Antwort2
Ich denke, Sie müssen update-rc.d
Start und Stopp einrichten, um optimale Ergebnisse zu erzielen ...
https://www.debian-administration.org/article/28/Making_scripts_run_at_boot_time_with_Debian
Von der Manpage von insserver:
Es wird nicht empfohlen, insserv direkt auszuführen, es sei denn, Sie wissen genau, was Sie tun. Dies kann dazu führen, dass Ihr Boot-System nicht mehr funktioniert. update-rc.d ist die empfohlene Schnittstelle zum Verwalten von Init-Skripten.