Upstart wurde von Canonical entwickelt und war daher eine Zeit lang die Init-Implementierung unter Ubuntu; bei modernen Ubuntu-Installationen wird jedoch mittlerweile systemd verwendet. Upstart wurde entwickelt, um die Probleme von SysV zu verbessern, wie z. B. starre Startprozesse, Blockierung von Aufgaben usw. Das ereignis- und jobgesteuerte Modell von Upstart ermöglicht es ihm, auf Ereignisse zu reagieren, sobald sie auftreten.
Um herauszufinden, ob Sie Upstart verwenden, ist das Vorhandensein eines Verzeichnisses /usr/share/upstart ein ziemlich guter Indikator.
Jobs sind die Aktionen, die Upstart ausführt, und Ereignisse sind Nachrichten, die von anderen Prozessen empfangen werden, um Jobs auszulösen. Um eine Liste der Jobs und ihrer Konfiguration anzuzeigen:
pete@icebox:~$ ls /etc/init
acpid.conf mountnfs.sh.conf
alsa-restore.conf mtab.sh.conf
alsa-state.conf networking.conf
alsa-store.conf network-interface.conf
anacron.conf network-interface-container.conf
Innerhalb dieser Jobkonfigurationen finden Sie Informationen darüber, wie und wann Jobs gestartet werden sollen.
Zum Beispiel könnte in der Datei networking.conf etwas so Einfaches stehen wie:
start on runlevel [235]
stop on runlevel [0]
Dies bedeutet, dass die Netzwerkkonfiguration auf den Runlevels 2, 3 oder 5 gestartet wird und auf Runlevel 0 gestoppt wird. Es gibt viele Möglichkeiten, die Konfigurationsdatei zu schreiben, und Sie werden dies entdecken, wenn Sie sich die verschiedenen verfügbaren Jobkonfigurationen ansehen.
Die Funktionsweise von Upstart ist wie folgt:
- Zuerst lädt es die Jobkonfigurationen aus
/etc/init. - Sobald ein Startereignis auftritt, führt es die durch dieses Ereignis ausgelösten Jobs aus.
- Diese Jobs erzeugen neue Ereignisse, und diese Ereignisse lösen dann weitere Jobs aus.
- Upstart fährt damit fort, bis alle notwendigen Jobs abgeschlossen sind.