lanseras | |
---|---|
Sorts | Systeminitieringssystem |
Författare | Apple Inc. |
Utvecklaren | Äpple |
Skrivet i | C |
Operativ system | Mac OS |
Första upplagan | 29 april 2005 |
stat | Stöds |
Licens | Apache-licens 2.0 |
Hemsida | opensource.apple.com/tar... |
launchd är ett macOS init-system med öppen källkod skapat för att ersätta SysVinit och SystemStarter . Launchd-processen har ett PID på 1 och är ansvarig för att starta andra processer och starta om dem om den misslyckas, dvs den utför init- funktioner (i nyare versioner av Linux systemd ). Den ersätter även cron . Processer som körs efter systemstart innan inloggning skrivs till katalogen /Library/LaunchDaemons. Processer som körs efter inloggning finns i katalogen /Library/LaunchAgents. I dessa kataloger skapas filer med xml-innehåll som styr uppstarten av processer. Det har gjorts försök att hamnalanseras för FreeBSD och derivat.
Det finns två huvudprogram i launchd: launchd och launchctl.
launchd hanterar demoner på både system- och användarnivå. Precis som xinetd kan launchd starta demoner på begäran. Precis som watchdogd kan launchd övervaka demoner för att se till att de fortfarande körs.
launchctl är ett kommandoradsprogram som får åtkomst till launchd med IPC och vet hur man analyserar filerna som används för att beskriva jobben som ska köras och serialisera dem med hjälp av ett specialiserat ordboksprotokoll som launchd förstår. launchctl kan användas för att ladda och ta bort demoner, starta och stoppa övervakade jobb som körs, få systemanvändningsstatistik för lanserad och dess underordnade processer och konfigurera miljöinställningar.
launchd har två huvuduppgifter. Den första är att starta upp systemet och den andra är att ladda och underhålla tjänster. Här är en förenklad bild av att köra ett Mac OS X Tiger-system på en PowerPC .
launchd skiljer sig mycket från SystemStarter genom att det kanske inte startar alla demoner vid uppstart. Nyckeln till launchd, som xinetd, är att starta demoner på begäran. När launchctl listar jobb vid uppstart, ber den launchd att reservera och lyssna på alla portar som efterfrågas av dessa jobb. Om detta anges i arket med "OnDemand"-nyckeln, laddas demonen inte för tillfället. Snarare kommer launchd att lyssna på en port, starta demonen vid behov och stänga av den när den inte längre behövs. När demonen är laddad kommer launchd att övervaka den och se till att den körs om det behövs. På detta sätt liknar det watchdogd och delar watchdogds krav på att processer inte försöker splittra eller demonisera sig själva. Om en process hamnar i bakgrunden kommer launchd att förlora den och försöka starta om den. Mac OS X Tiger laddas därför mycket snabbare än tidigare versioner. Systemet registrerar bara de demoner som ska köras och startar dem inte förrän de behövs. Faktum är att förloppsindikatorn som visas under laddningen bara är en placebo som heter WaitingForLoginWindow [1] som faktiskt inte visar något annat än tiden. Den svåraste delen att hantera under lanseringen är beroenden. SystemStarter har ett mycket enkelt beroendesystem som använder nycklarna Använder, Kräver och Tillhandahåller i listan över startobjekt. Det finns två huvudstrategier när man skapar beroenden för att köras på Tiger: IPC tillåter demoner att prata med varandra för att räkna ut beroenden, eller demoner kan titta på filer eller ändra sökvägar. SystemStarter stöddes fortfarande före OS X Mountain Lion , men togs bort i OS X Yosemite .
I launchd är tjänstehanteringen centraliserad i launchctl-applikationen. I sig själv kan launchctl acceptera kommandon från kommandoraden, från standardinmatning eller köras interaktivt. Med superanvändarprivilegier kan launchctl användas för att göra globala ändringar. launchctl kommunicerar med launchd via en Mach -specifik IPC-mekanism.
En egenskapslista (plist) är en typ av fil som startas använder för att konfigurera programmet. När launchd skannar en mapp eller ett jobb skickas med launchctl läser den en plist-fil som beskriver hur programmet ska startas.
Listan över vanliga nycklar ges nedan. Alla nycklar är valfria om inget annat anges. För en fullständig lista, se Apples manualsida för launchd.plist [2] .
Nycklar | Sorts | Notera |
---|---|---|
Label | Linje | Jobbtitel. Enligt konvention är jobbetiketten densamma som plist-filnamnet, utan tillägget .plist. Nödvändig. |
Program | Linje | Sökväg till den körbara filen. Användbar för enkla lanseringar. Minst en Program- eller ProgramArguments-nyckel krävs. |
ProgramArguments | Array av strängar | En uppsättning strängar som representerar UNIX-kommandot. Den första raden är vanligtvis sökvägen till den körbara filen, medan de sista raderna innehåller alternativ eller parametrar. Minst en Program- eller ProgramArguments-nyckel krävs. |
UserName | linje
(standard rot eller nuvarande användare) |
Jobbet kommer att köras som den givna användaren, som kanske eller inte kan vara användaren som skickade det till launchd. |
OnDemand
(Utfasad sedan 10.5) |
logisk
(standard JA) |
Utfasad från och med 10.5 med ett kraftfullare KeepAlive-alternativ. Boolesk flagga som avgör om jobbet körs kontinuerligt eller inte. |
RunAtLoad | logisk
(standard NEJ) |
En boolesk flagga som avgör om uppgiften startas omedelbart efter att uppgiften har laddats in i lansering. |
StartOnMount | logisk
(standard NEJ) |
En boolesk flagga som avgör om uppgiften körs när ett nytt filsystem monteras. |
QueueDirectories | Array av strängar | Letar efter nya filer i en katalog. Katalogen måste vara tom till att börja med och måste återställas till ett tomt tillstånd innan QueueDirectories kör sin uppgift igen. |
WatchPaths | Array av strängar | Tittar på filsystemets sökväg för ändringar. Kan vara en fil eller mapp. |
StartInterval | heltal | Schemalägger ett jobb att köras enligt ett återkommande schema. Anger antalet sekunder att vänta mellan körningarna. |
StartCalendarInterval | Ordbok över heltal
eller Array av heltalsordböcker |
Arbetsplanering. Syntax liknar Cron |
RootDirectory | Linje | Jobbet kommer att placeras i den här katalogen innan det körs. |
WorkingDirectory | Linje | Jobbet kommer att överföras till denna katalog innan det körs. |
StandardInPath... |
Linje | Nycklar för att specificera in- och utdatafiler för en pågående process. |
LowPriorityIO | logisk | Berättar för kärnan att denna uppgift har låg prioritet för filsystem I/O. |
AbandonProcessGroup | logisk
(standard NEJ) |
Boolesk flagga som bestämmer om underprocesser startade från en uppgift som startas av launchd kommer att dödas när uppgiften avslutas. Användbar när en kortlivad uppgift startar en långlivad deluppgift, men kan leda till zombieprocesser. |
SessionCreate | logisk
(standard NEJ) |
Boolesk flagga som avgör om en säkerhetssession kommer att skapas för uppgiften och dess underprocesser. |
Namnet på varje nyckel i Sockets-sektionen kommer att placeras i miljön för jobbet när det körs, och filbeskrivningen för den socket kommer att vara tillgänglig i den miljövariabeln. Detta skiljer sig från systemd-socketaktivering genom att namnet på socketdefinitionen i jobbkonfigurationen är hårdkodat i applikationen. Detta protokoll är mindre flexibelt, även om det, liksom systemd, inte kräver att demonen hårdkodar den initiala filbeskrivningen (3 [3] från och med 2014 ).
Mjukvaran designades och skrevs av Dave Zarzhitsky på Apple . Företaget planerade att ersätta allt av följande i macOS- miljön -
De flesta av dessa saker släpptes när lanseringen introducerades med Mac OS X v10.4 (Tiger).
2005 sköt R. Tyler Croy upp lanseringen av FreeBSD som en del av projektet Google Summer of Code. Det kan inte köras som PID 1 (endast sessionsinitiering) och det används normalt inte på den här plattformen. [fyra]
2006 ansågs Ubuntu Linux-distributionen använda lanserad. Detta alternativ avvisades eftersom källkoden var under Apples offentliga licens - beskrivs som ett "oundvikligt licensproblem" [5] . Istället utvecklade och bytte Ubuntu -utvecklarna till sitt eget tjänstehanteringsverktyg för Upstart .
I augusti 2006 återlanserade Apple under Apache License version 2.0 för att underlätta adoption av andra utvecklare med öppen källkod [6] . De flesta Linux- distributioner använder systemd eller Upstart , eller fortsätter att använda Init , och BSD-liknande system fortsätter också att använda Init .
I december 2013 tillkännagav R. Tyler Croy sin avsikt att återuppta arbetet med sin version av lanserad för FreeBSD , och hans "openlaunchd" Github -förråd blev därefter aktivt [7] .
Under 2014, med början med OS X 10.10 och iOS 8 , flyttade Apple koden för att köras till den stängda källkoden libxpc [8] .
I augusti 2015 tillkännagav Jordan Hubbard och Kip Macy lanseringen av NextBSD , som är baserad på FreeBSD-CURRENT kärnan samtidigt som de lägger till Mach IPC, Libdispatch, notified, asld, launchd och andra komponenter härledda från Darwin som består av öppen källkod för macOS .
versioner | Licens | Ingick i MacOS- versionen |
---|---|---|
lanserade 106 | Apple Public Source License [9] | |
lanserade 106.3 | Apple Public Source License [12] | |
lanserades 106.10 | Apple Public Source License [17] | |
lanserades 106.13 | Apple Public Source License [20] | |
lanserades 106.14 | Apple Public Source License [23] | |
lanseras 106.20 | Apple Public Source License [30] | |
lanserade 152 | Apache License 2.0 [35] | |
lanserade 257 | Apache License 2.0 [36] | |
lanserade 258.1 | Apache License 2.0 [39] |
|
lanserades 258.12 | Apache License 2.0 [41] | |
lanserad 258.18 | Apache License 2.0 [44] |
|
lanserad 258.19 | Apache License 2.0 [46] |
|
lanserad 258.22 | Apache License 2.0 [48] |
|
lanserad 258,25 | Apache License 2.0 [50] |
|
lanserade 328 | Apache License 2.0 [52] | |
lanserade 329.3 | Apache License 2.0 [56] |
|
lanserade 329.3.1 | Apache License 2.0 [58] |
|
lanserade 329.3.2 | Apache License 2.0 [60] |
|
lanserade 329.3.3 | Apache License 2.0 [62] | |
lanserad 392.18 | Apache License 2.0 [66] | |
lanserad 392.35 | Apache License 2.0 [69] |
|
lanserade 392.36 | Apache License 2.0 [71] |
|
lanserade 392.38 | Apache License 2.0 [73] |
|
lanserade 392.39 | Apache License 2.0 [75] |
|
lanserad 442.21 | Apache License 2.0 [77] | |
lanserad 442.26.2 | Apache License 2.0 [80] | |
lanserade 842.1.4 | Apache License 2.0 [85] | |
lanserad 842.90.1 | Apache License 2.0 [88] | |
lanserad 842.92.1 | Apache License 2.0 [91] |
Mac OS | |
---|---|
Ansökningar | |
Verktyg |
|
Teknik och användargränssnitt _ |
|