Ich glaube, ich habe vor einiger Zeit etwas darüber gelesen, aber ich kann mich nicht erinnern, wie es gemacht wurde. Grundsätzlich habe ich einen Dienst, bei /etc/init.d
dem ich beim Booten automatisch starten möchte. Ich erinnere mich, dass es etwas mit dem Verknüpfen des Skripts mit dem /etc/rc.d
Verzeichnis zu tun hat , aber ich kann mich derzeit nicht erinnern. Was ist der Befehl dafür?
Ich glaube, ich bin auf einem Fedora / CentOS-Derivat.
fedora
boot
init-script
Naftuli Kay
quelle
quelle
/etc/init
,/etc/init.d
,/etc/rc.d
,/etc/rc.local
und ein paar mehr hat es?Antworten:
Wenn Sie, wie bereits erwähnt, auf einem Red Hat-basierten System arbeiten, haben Sie folgende Möglichkeiten:
/etc/init.d
(zB/etc/init.d/myscript
). Das Skript sollte das folgende Format haben:Das Format ist ziemlich normal und Sie können vorhandene Skripte in anzeigen
/etc/init.d
. Sie können dann das Skript wie folgt verwenden/etc/init.d/myscript start
oderchkconfig myscript start
. Dieckconfig
Manpage erklärt den Header des Skripts:Der beispielhafte Start-, Stopp- und Statuscode verwendet die in definierten Hilfsfunktionen
/etc/init.d/functions
Aktivieren Sie das Skript
Stellen Sie sicher, dass das Skript aktiviert ist - für die von Ihnen ausgewählten Ebenen sollte "Ein" angezeigt werden.
quelle
Sie testen, in welchen Runlevel Ihre Maschine normalerweise startet.
Oft ist dies 5 oder 2 - es gibt verschiedene Konventionen, aber nichts wirklich Etabliertes, afaik. Ubuntu verwendet 2, während die frühere Distribution, die ich verwendet habe, immer verwendet wurde
Dann machst du einen Symlink von deinem Init-Skript, vielleicht
/etc/init.d/foobar
zu/etc/rc2.d/SXYfoobar
S bedeutet 'Starte dieses Skript in diesem Runlevel (hier: 2). XY ist eine zweistellige Dezimalzahl, die für die Reihenfolge relevant ist, in der die Skripte gestartet werden.
Wenn Sie sich darauf verlassen müssen, dass das Skript S45barfoo vor Ihnen ausgeführt wird, und S55foofoo von Ihrem Skript abhängt, wählen Sie xy zwischen 45 und 55. Bei gleichen Zahlen ist die Startreihenfolge undefiniert.
Ubuntu hat mittlerweile auf eine andere Startprozedur umgeschaltet, genannt
upstart
.Und beachten Sie: Nicht immer verlinken die Links auf
/etc/rcX.d
- manchmal ist es/etc/init/rcX.d
oder ähnliches, aber es sollte leicht zu finden sein, irgendwo unter / etc.Wenn Sie etwas am Ende des Startskripts starten möchten, müssen Sie nach
/etc/rc.local
einer Datei suchen. Wenn dies jedoch davon abhängt, dass X11 bereits ausgeführt wird, suchen Sie möglicherweise nach einer Autostart-Option für Ihre Desktop-Umgebung oder/etc/X11/Xsession.d/
nach einem ähnlichen Muster wie beschrieben über.Wenn Sie davon abhängig sind, dass das Netzwerk aktiv ist, gibt es ein separates Verzeichnis (if-up.d) und für gemountete Geräte wie externe USB-Laufwerke
/etc/udev/rules.d/
.quelle
update-rc.d
?Als Naftuli Tzvi Kay oben nach Debian fragte: Ab Debian 6 sollte Ihr Skript einen LSB-Header (Linux Standards Base) enthalten, der seine Abhängigkeiten und Fähigkeiten anzeigt ( siehe Debian-Wiki-Seite ).
Wenn ein LSB-Header vorhanden ist, können Sie
insserv
Ihr Skript in den Boot-Vorgang einbeziehen ( siehe eine andere Debian-Wiki-Seite ).quelle