Hoe verschilt Upstart??
Upstart heeft een model voor het starten van een beschikbare baan wanneer de gebeurtenis plaatsvindt. Vergelijk dit met system, dat processen start waarop alle andere systemen draaien. Het belangrijkste verschil is dat Upstart op gebeurtenissen wacht en systemd afhankelijkheden coördineert. Beide systemen kunnen reguliere scripts uitvoeren en beide proberen parallel te starten. Omdat de verschillen zo klein zijn, kunnen Upstart-scripts meestal gewoon worden aangeroepen met een systemd-servicebestand. Ze kunnen ook beide ongewijzigde systemV-bestanden uitvoeren run. In feite zoeken beide standaard naar een oude systemV-bestandsstructuur. Het grote verschil is dat Upstart zoekt naar gedefinieerde gebeurtenissen om iets te starten. Dus als je je eigen service wilt toevoegen, moet je uitzoeken in welke context je je service nodig hebt. Meestal is dit gemakkelijk, omdat je iets wilt dat bijvoorbeeld op je bureaublad draait. De desktop begint met event runlevel 5, dus dat stel je in in je script. Voor systemd daarentegen is dit het grafische doel. In upstart heb je ook andere evenementen die je kunt gebruiken, zoals montage, gemonteerd en toetsenbordverzoek. Deze worden afgehandeld met systemd through sockets en dbus.
Hoe migreer je scripts?
Je hebt alle Upstart-scripts in /etc/init, hun namen zijn taaknaam met een 'conf'-extensie. De scripts zijn niet uitvoerbaar, ze verwijzen alleen naar één of meer uitvoerbare bestanden die moeten worden uitgevoerd. In alle Upstart-scripts hebt u gedefinieerd op welke gebeurtenis het script moet starten en wanneer het moet stoppen. U moet ook pre-start- en post-stop-items hebben. Deze zullen de omgeving voorbereiden en opruimen na uitvoering. Een voorbeeldscript staat hieronder:
omschrijving "Een eenvoudig script"start op runlevel [2345]
stop op runlevel [06]
respawn
env SCRIPT_ENV_VAR='/pad/naar/bestand.configuratie'
chdir /pad/naar/script/
exec bash-script.sh
De 'exec'-instructie zegt wat er zal gebeuren als je het handmatig start. De start- en stoprichtlijnen bepalen wanneer het script automatisch wordt gestart. Zoals je kunt zien, kun je ook de map instellen waarin het wordt uitgevoerd. Er zijn veel meer aspecten aan Upstart, maar u moet leren hoe u eruit kunt migreren.
Om dit script in systemd te laten werken, moet u een servicebestand maken.
Eenheid]Description=Een eenvoudig script
[Onderhoud]
Omgeving= SCRIPT_ENV_VAR =/pad/naar/bestand.configuratie
WorkingDirectory=/pad/naar/script
ExecStart=/usr/bin/bash-script.sh
Opnieuw opstarten=altijd
[Installeren]
WantedBy=meerdere gebruikers.doelwit
Hier kun je zien dat dezelfde dingen gebeuren, maar met andere trefwoorden. Het formaat is eenvoudig en to the point. In plaats van runlevels te hebben, wijs je naar welk doel je script wil. Dit benadrukt dat systemd alles te maken heeft met afhankelijkheid en dingen starten voor de specifieke omgeving specific. Merk ook op dat de ExecStart naar een globaal pad verwijst, het gebruikt nooit een lokaal pad.
Waar blinkt het uit??
Upstart is ontworpen voor parallel gedrag, maar is ook ontworpen om klein te zijn. Als je dit ergens nog steeds vindt, is het in embedded systemen en ChromeOS. Ja, ChromeOS had het. De reden is dat het vanaf het begin bovenop is gebouwd als Ubuntu, op het moment dat Ubuntu een nieuw begin had als het standaard initiële systeem. ChromeOS is sindsdien overgegaan op het gebruik van Gentoo als basis.
Conclusie
Upstart is een interessant onderwerp, maar vooral historisch. Je hebt het misschien alleen nodig als je oude systemen tegenkomt. Het meest voorkomende alternatief op Linux is nu systemd. Als je bedenkingen hebt met betrekking tot systemd, moet je op zoek gaan naar andere minimale systemen. Een interessante is de suckless, sinit. Het ondersteunt drie signalen en je moet er zelf alle scripts voor schrijven, of de scripts van iemand anders aanpassen. Dit kan een interessante oefening zijn, maar is alleen nuttig als je aan een zeer minimaal en gespecialiseerd systeem werkt.