Ubuntu verwendet Upstart
anstelle des traditionellen init
Systems. Emporkömmling ist stärker als Init, aber ein bisschen komplizierter als init
.
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:
Verwenden Sie das Dienstprogramm service (8), anstatt Init-Skripte über /etc/init.d aufzurufen, z service mysql restart
Da das Skript, das Sie aufrufen möchten, in einen Upstart-Job konvertiert wurde, können Sie auch das Dienstprogramm restart (8) verwenden, z. B. mysql neu starten.
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 von upstart
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:
initctl show-config
Die Ausgabe sieht folgendermaßen aus:
...
hostname
start on startup
udevtrigger
start on ((startup and started udev) and not-container)
tty2
start on (runlevel [23] and ((not-container or container CONTAINER=lxc) or container CONTAINER=lxc-libvirt))
...
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 :-))
chkconfig --list
wird richtig funktionieren?on
bedeutet, dass der Dienst auf diesem Runlevel ausgeführt wird und beim Systemstart automatisch gestartet wird.