Welche Schritte unternimmt „insserv“, um ein Init(System-V)-Skript zu installieren?

Welche Schritte unternimmt „insserv“, um ein Init(System-V)-Skript zu installieren?

initIch 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-scriptDatei 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 testdie /etc/init.d/.depend.startDatei hinzugefügt, aber /etc/init.d/test-scriptsie wurde beim Booten immer noch nicht ausgeführt.

Welche zusätzlichen Schritte sind insserverforderlich, um ein Init-Skript zu installieren?

Antwort1

Fügt zusätzlich zu den symbolischen Links zu /etc/rc<runlevel>.d/Verzeichnissen insserveine <script_name>:Zeile zur /etc/init.d/.depend.startDatei 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-scriptals 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.startnicht die test:Zeile.

Antwort2

Ich denke, Sie müssen update-rc.dStart 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.

verwandte Informationen