Neuere Syntax für Suse Linux Enterprise 11 SP2 (und openSUSE?)
Der beste Weg wäre, ein Shell-Skript zu erstellen, das Ihr PHP-Skript aufruft. Dieses Shell-Skript sollte den folgenden Kommentar in der Kopfzeile haben:
#!/bin/sh
### BEGIN INIT INFO
# Provides: nothing
# Required-Start: $all
# Default-Start: 3 5
# Default-Stop: 4
# Short-Description: single_line_description
# Description: multiline_description
### END INIT INFO
Eine typische Vorlage (mit vielen erklärenden Kommentaren) finden Sie in /etc/init.d/skeleton
. Diese Vorlage enthält den erforderlichen Code zum Einbinden Ihres PHP-Skripts. Sie sehen einen Startfall, in dem Sie Ihr PHP-Skript aufrufen müssten.
Ich habe eine Reihe von optionalen Parametern in der Kopfzeile verworfen, da es nicht so aussieht, als würden Sie sie benötigen.
Wichtig
Es ist wichtig, mindestens das Skelett der case-Anweisung zu verwenden (siehe Aktionen für Init-Skripte ) und mindestens den Startfall zu implementieren. Im Startfall können Sie dort Ihr Skript aufrufen.
Hier finden Sie ein kleines Skriptbeispiel, das am Ende eines Startvorgangs aufgerufen wird: siehe meine Übersicht . Ich habe eine ungültige Ausführungsstufe für den Standardstopp festgelegt, aber irgendwie wird das Skript beim Herunterfahren immer noch aufgerufen. Auf jeden Fall wird der Code im Fall "Stop" ausgeführt, nicht der im Fall "Start" beim Herunterfahren.
Wenn Sie Ihr Skript geschrieben haben, kopieren Sie es, /etc/init.d
um anzunehmen, dass Ihr Init-Skript Boot-Benachrichtigung heißt. Dann würden Sie (als Root) Folgendes tun:
chown root:root boot-notification
chmod 0750 boot-notification
mv boot-notification /etc/init.d/
Dann müssen Sie das Skript im Init-System "registrieren". Sie werden den insserv
Befehl (wieder als root) verwenden oder YaST verwenden:
insserv boot-notification
Anschließend können Sie überprüfen, ob das Skript eines der letzten ist, das ausgeführt wird, indem Sie sich die einzelnen Init-Ebenen ansehen. Wenn Sie nur Runlevel 3 gewählt haben, können Sie dies tun:
ls -l /etc/init.d/rc3.d/S*
Dies gibt eine Liste von Links zu Init-Skripten zurück. Der Link zu Ihrem Skript sollte sich am Ende (oder in der Nähe davon) der Liste befinden.
Hinweis: Wenn Sie mit der dynamischeren Art des Schreibens von Init-Skripten herumspielen möchten, würde ich empfehlen, diese beiden Seiten zu lesen:
(offen) SUSE verwendet
/etc/init.d/after.local
zu diesem Zweck. Fügen Sie einfach die Befehle, die Sie ausführen müssen, in diese Datei ein. Beachten Sie, dass dies mit SystemV init gut funktioniert, aber mit systemd müsste AFAIK anders gelöst werden.quelle
Für OpenSUSE 12.2 (Mantis) sollte das Skript für "after local" lauten
/etc/init.d/after-local
, und Sie müssen es möglicherweise über systemctl wie folgt aktivieren ...Um /etc/init.d/after-local zu aktivieren ,
Um den Status von /etc/init.d/after-local zu überprüfen ,
quelle
Das Hinzufügen eines neuen Init-Skripts ist in Suse ganz einfach.
Der beste Weg wäre, ein Shell-Skript zu erstellen, das Ihr PHP-Skript aufruft. Dieses Shell-Skript sollte den folgenden Kommentar in der Kopfzeile haben:
Sie finden eine typische Vorlage (mit
/etc/init.d/skeleton.compat
vielen erklärenden Kommentaren) in (die die chkconfig-Syntax unterstützt, die auch7etc/init.d/skeleton
den neueren LSB-Standard unterstützt, aber es ist etwas komplizierter, Ihnen zu erklären, wie sie eingerichtet wird, obwohl dies der Fall ist stärker). Diese Vorlage enthält den erforderlichen Code zum Einbinden Ihres PHP-Skripts. Sie sehen einen Startfall, in dem Sie Ihr PHP-Skript aufrufen müssten.Die wichtige Nummer, die ich dir gegeben habe, ist auf der
chkconfig line
.Wenn Sie Ihr Skript geschrieben haben, kopieren Sie es,
/etc/init.d
um anzunehmen, dass Ihr Init-Skript Boot-Benachrichtigung heißt. Dann würden Sie (als Root) Folgendes tun:Dann müssen Sie das Skript im Init-System "registrieren". Sie werden den
chkconfig
Befehl verwenden (wieder als root):Überprüfen Sie, ob dies richtig berücksichtigt wurde:
Wenn Sie weiter sehen, ist es gut!
Anschließend können Sie überprüfen, ob das Skript eines der letzten ist, das ausgeführt wird, indem Sie sich die einzelnen Init-Ebenen ansehen. Wenn Sie nur Runlevel 3 gewählt haben, können Sie dies tun:
Dies gibt eine Liste von Links zu Init-Skripten zurück. Der Link zu Ihrem Skript sollte sich am Ende (oder in der Nähe davon) der Liste befinden.
Hinweis: Wenn Sie mit der dynamischeren Art des Schreibens von Init-Skripten herumspielen möchten, würde ich empfehlen, diese beiden Seiten zu lesen:
quelle
Ich habe festgestellt, dass es zwei Möglichkeiten gibt, dies zu tun:
Geben Sie dann ein
quelle