Hur skiljer sig Upstart från?
Upstart har en modell för att starta ett tillgängligt jobb när händelsen inträffar. Jämför detta med systemd, som startar processer där alla andra system körs. Huvudskillnaden är att Upstart väntar på händelser och systemd samordnar beroenden. Båda systemen kan köra vanliga skript och båda försöker starta parallellt. Eftersom skillnaderna är så små kan Upstart-skript vanligtvis bara anropas med en systemd-servicefil. De kan också båda köra oförändrade systemV-filer. Faktum är att båda letar efter en gammal systemV-filstruktur som standard. Den stora skillnaden är att Upstart letar efter definierade händelser för att starta vad som helst. Så om du vill lägga till din egen tjänst måste du ta reda på i vilket sammanhang du behöver din tjänst. Vanligtvis är detta enkelt eftersom du vill ha något som körs till exempel på skrivbordet. Skrivbordet börjar med event runlevel 5, så du ställer in det i ditt skript. För systemd är det däremot det grafiska målet. I upstart har du också andra händelser som du kan använda, till exempel montering, monterad och tangentbordsförfrågan. Dessa hanteras med systemd via uttag och dbus.
Hur migrerar du skript?
Du har alla Upstart-skript i / etc / init, deras namn är jobbnamn med ett "conf" -tillägg. Skripten är inte körbara, de pekar bara på en eller flera körbara filer som ska köras. I alla Upstart-skript har du definierat vilken händelse skriptet ska starta och när det ska sluta. Du bör också ha pre-start och post-stop poster. Dessa kommer att förbereda miljön och städa upp efter utförandet. Ett exempel på skript finns nedan
beskrivning "Ett enkelt skript"börja på körnivå [2345]
stanna på körnivå [06]
respawn
env SCRIPT_ENV_VAR = '/ sökväg / till / fil.konfigurera '
chdir / sökväg / till / skript /
exec bash-skript.sh
Uttrycket 'exec' säger vad som kommer att hända när du startar det manuellt. Start- och stoppdirektiven definierar när skriptet startar automatiskt. Som du kan se kan du också ställa in katalogen som den ska köras i. Det finns många fler aspekter på Upstart men du bör lära dig att migrera ut.
För att detta skript ska fungera i systemd måste du skapa en servicefil.
Enhet]Beskrivning = Ett enkelt skript
[Service]
Miljö = SCRIPT_ENV_VAR = / sökväg / till / fil.konfigurera
WorkingDirectory = / sökväg / till / skript
ExecStart = / usr / bin / bash-skript.sh
Starta om = alltid
[Installera]
WantedBy = fleranvändare.mål
Här kan du se att samma saker händer men med andra nyckelord. Formatet är enkelt och till sak. Istället för att ha körnivåer pekar du på vilket mål som vill ha ditt skript. Detta belyser att systemd handlar om beroende och starta saker för den specifika miljön. Observera också att ExecStart pekar på en global sökväg, den använder aldrig en lokal sökväg.
Var utmärker det sig?
Upstart designades för parallellt beteende men det var också utformat för att vara litet. Om du hittar det här någonstans fortfarande kommer det att finnas i inbäddade system och ChromeOS. Ja, ChromeOS hade det. Anledningen är att den byggdes ovanpå om Ubuntu från början, vid den tidpunkt då Ubuntu hade uppstart som standardinitialsystem. ChromeOS har sedan gått vidare till att använda Gentoo som bas.
Slutsats
Upstart är ett intressant ämne men huvudsakligen historiskt. Du kanske bara behöver det om du stöter på gamla system. Det vanligaste alternativet på Linux är nu systemd. Om du har reservationer angående systemd bör du leta efter andra minimala system. En intressant är den suglösa, sinit. Den stöder tre signaler och du måste skriva alla skript för det själv eller ändra skript från någon annan. Detta kan vara en intressant övning men är bara användbar om du arbetar med ett mycket minimalt och specialiserat system.