In Ubuntu
- Gibt es einen Befehl zum Anzeigen einer Liste aller Autostart-Dienste?
- Gibt es einen Befehl zum Überprüfen, ob ein Dienst beim Booten automatisch gestartet wird oder nicht?
Ich habe Google und IRC gemacht. Ich kann die Antwort nicht finden. Vielleicht gibt es in Ubuntu keine solchen Befehle. Am Anfang dachte ich, dass alle automatisch gestarteten Dienste darunter sein würden /etc/rc2.d/
, aber ich habe mich geirrt. Einige sind nur unter konfiguriert /etc/init/*.conf
. Dann habe ich das chkconfig
Tool ausprobiert (manuell installiert), es funktioniert nicht immer. Beispielsweise gibt es das falsche Ergebnis, von mongodb
dem aus automatisch gestartet wird /etc/init/mongodb.conf
.
service --status-all
und initctl list
kann nur den aktuellen Status der Dienste anstelle des Autostart-Status anzeigen. update-rc.d
ist ein Befehl zum Ändern des Autostart-Status, anstatt den Status anzuzeigen.
Wenn es keine Antwort auf meine Frage gibt, frage ich mich nur, warum es so schwer ist, Autostart-Dienste in Ubuntu zu überprüfen.
chkconfig --list
wird richtig funktionieren?on
bedeutet, dass der Dienst auf diesem Runlevel ausgeführt wird und beim Systemstart automatisch gestartet wird.ls /etc/rc?.d
?Antworten:
Ubuntu verwendet
Upstart
anstelle des traditionelleninit
Systems. Emporkömmling ist stärker als Init, aber ein bisschen komplizierter alsinit
.Im Gegensatz dazu ist Upstart ereignisbasiert. Ein "Ereignis" kann so etwas wie "Booten" sein ... oder es kann viel spezifischer sein, wie "das Netzwerk ist jetzt einsatzbereit". Sie können festlegen, welche Skripte von welchen Ereignissen abhängen. Alles, was nicht auf ein Ereignis wartet, kann ausgeführt werden, wenn die CPU verfügbar ist.
Dieses ereignisbasierte System hat einen weiteren Vorteil: Sie können es theoretisch auch dann verwenden, wenn das System in Betrieb ist. Upstart soll schließlich Aufgaben wie das Anschließen externer Geräte wie USB-Sticks (derzeit von udev und hal ausgeführt) oder das Ausführen von Programmen zu bestimmten Zeiten (derzeit von cron ausgeführt) übernehmen.
Wie Sie jetzt wissen sollten, ist ein toter Daemon (der beim Start nicht ausgeführt wird) möglicherweise am Leben und wird aufgrund eines Ereignisses gestartet.
Ubuntu hat sowohl / etc / init für Upstart als auch /etc/init.d für die alten SysV-Dateien. Einige der darin enthaltenen Dateien sind reguläre SysV Init-Skripte, die noch nicht migriert wurden. Einige migrierte Dienste führen jedoch eine Verknüpfung von /etc/init.d zu / lib / init / upstart-job. Wenn Sie eine davon ausführen, funktioniert dies, es wird jedoch zuerst eine Warnung ausgegeben:
Auf einem Upstart-Rechner kommt init von upstart. Anstatt ein Master-RC-Skript auszuführen, das die Skripte für ein bestimmtes Runlevel aufruft, nimmt Upstarts Init Jobs aus seinem Jobverzeichnis an.
Jetzt wissen wir, dass es keine einfache Möglichkeit gibt, Autostart-Dämonen aufzulisten. Sie sollten alle Dämonen auflisten und einzeln überprüfen. Der Dämon kann von
init
oder vonupstart
oder sogar von einem späteren Ereignis gestartet werden . Die einfachste Möglichkeit, diese Liste abzurufen, besteht darin, den folgenden Befehl in der Shell auszuführen:Die Ausgabe sieht folgendermaßen aus:
Einige Elemente wie das erste ist so einfach,
hostname
startet beim Start. Andere Elemente sehen jedoch möglicherweise komplizierter aus. (Aber zum Glück vom Menschen lesbar :-))quelle
Tatsächlich sind alle Dienste nur unter /etc/init.d verfügbar:
Eine weitere Sache, alle Dienste sind auch unter vorhanden
rc0.d
rc1.d
rc2.d
rc3.d
rc4.d
rc5.d
rc6.d
, aber es ist eine symbolische Verbindung zu/etc/init.d
nur.Hier sehen Sie den Inhalt des
rc1.d
Verzeichnisses:Hier können Sie den symbolischen Link zu init.d (K15pulseaudio -> ../init.d/pulseaudio) beobachten.
Aber hier ist jeder Dienst mit init.d verknüpft, oder? Aber nicht jeder Dienst wird gestartet. Der Grund sind zwei Skripte.
Das erste ist ein S- Skript (S30killprocs) ---> start
Das zweite ist ein k- Skript (K15pulseaudio) ---> kill
Alle K-Skriptdienste beenden die Dienste und alle S-Skriptdienste starten die Dienste für diesen Runlevel.
In Kürze
S70dns-clean -> ../init.d/dns-clean
Starten Sie dendns-clean
Dienst in Runlevel 1.K15pulseaudio -> ../init.d/pulseaudio
beendet denpulseaudio
Dienst in Runlevel 1.quelle
Sie können sysv-rc-conf installieren, ein ncurses-Programm, mit dem Sie die rc-Ebenen grafisch konfigurieren / anzeigen können.
quelle
Schau mal hier: update-rc-d-cheat-sheet
Keine, ich weiß von (was nichts bedeutet;), aber du kannst hier anfangen zu lesen: askubuntu forum - service dependency
quelle