käynnistetty | |
---|---|
Tyyppi | Järjestelmän alustusjärjestelmä |
Tekijä | Apple Inc. |
Kehittäjä | Omena |
Sisään kirjoitettu | C |
Käyttöjärjestelmä | Mac käyttöjärjestelmä |
Ensimmäinen painos | 29. huhtikuuta 2005 |
Osavaltio | Tuettu |
Lisenssi | Apache-lisenssi 2.0 |
Verkkosivusto | opensource.apple.com/tar... |
launchd on avoimen lähdekoodin macOS - init-järjestelmä , joka on luotu korvaamaan SysVinit ja SystemStarter . Käynnistettävän prosessin PID on 1 ja se on vastuussa muiden prosessien käynnistämisestä ja niiden uudelleenkäynnistämisestä, jos se epäonnistuu, eli se suorittaa init -toimintoja (uudemmissa Linux systemd -versioissa ). Se myös korvaa cronin . Prosessit, jotka suoritetaan järjestelmän käynnistyksen jälkeen ennen kirjautumista, kirjoitetaan /Library/LaunchDaemons-hakemistoon. Kirjautumisen jälkeen suoritettavat prosessit sijaitsevat /Library/LaunchAgents-hakemistossa. Näissä hakemistoissa luodaan xml-sisältöisiä tiedostoja, jotka ohjaavat prosessien käynnistämistä. Porttia on yritetty lanseerattiin FreeBSD :lle ja johdannaisille.
Launnuksessa on kaksi pääohjelmaa: launchd ja launchctl.
launchd hallitsee demoneja sekä järjestelmä- että käyttäjätasolla. Kuten xinetd, launchd voi käynnistää demoneja pyynnöstä. Kuten watchdogd, launchd voi valvoa demoneita varmistaakseen, että ne ovat edelleen käynnissä.
launchctl on komentorivisovellus, joka käyttää launchd:ta IPC:n avulla ja osaa jäsentää suoritettavien töiden kuvaamiseen käytetyt tiedostot ja sarjoittaa ne käyttämällä erityistä sanakirjaprotokollaa, jonka launchd ymmärtää. launchctl:llä voidaan ladata ja purkaa demoneita, käynnistää ja pysäyttää valvottuja töitä, saada järjestelmän käyttötilastoja launchdille ja sen aliprosesseille sekä määrittää ympäristöasetuksia.
launchdilla on kaksi päätehtävää. Ensimmäinen on käynnistää järjestelmä, ja toinen on ladata ja ylläpitää palveluita. Tässä on yksinkertaistettu näkymä Mac OS X Tiger -järjestelmän käyttämisestä PowerPC :ssä .
launchd eroaa suuresti SystemStarterista siinä mielessä, että se ei välttämättä käynnistä kaikkia demoneja käynnistyksen yhteydessä. Avain käynnistämiseen, kuten xinetd, on käynnistää demonit pyynnöstä. Kun launchctl luettelee työt käynnistyksen yhteydessä, se pyytää launchd:ia varaamaan ja kuuntelemaan kaikkia näiden töiden pyytämiä portteja. Jos tämä on määritetty taulukossa "OnDemand"-näppäimellä, demonia ei ole ladattu tällä hetkellä. Pikemminkin launchd kuuntelee porttia, käynnistää demonin tarvittaessa ja sammuttaa sen, kun sitä ei enää tarvita. Kun demoni on ladattu, launchd tarkkailee sitä ja varmistaa, että se toimii tarvittaessa. Tällä tavalla se on samanlainen kuin watchdogd ja jakaa vahtikoiran vaatimuksen, että prosessit eivät yritä haaroittaa tai demonisoida itseään. Jos prosessi menee taustalle, launchd menettää sen ja yrittää käynnistää sen uudelleen. Siksi Mac OS X Tiger latautuu paljon nopeammin kuin aiemmat versiot. Järjestelmä rekisteröi vain demonit, joiden pitäisi olla käynnissä, eikä käynnistä niitä ennen kuin niitä tarvitaan. Itse asiassa latauksen aikana näkyvä edistymispalkki on vain lumelääke nimeltä WaitingForLoginWindow [1] , joka ei itse asiassa näytä mitään muuta kuin aikaa. Vaikeinta hallita käynnistyksen aikana on riippuvuudet. SystemStarterilla on hyvin yksinkertainen riippuvuusjärjestelmä, joka käyttää Käynnistyskohteiden luettelossa avaimia Käyttää, Vaatii ja Tarjoaa. On olemassa kaksi päästrategiaa luotaessa riippuvuuksia Tigerissä: IPC sallii demonien keskustella toistensa kanssa riippuvuuksien selvittämiseksi, tai demonit voivat tarkastella tiedostoja tai muuttaa polkuja. SystemStarteria tuettiin edelleen ennen OS X Mountain Lionia , mutta se poistettiin OS X Yosemitessa .
Lausunnossa palvelunhallinta on keskitetty launchctl-sovellukseen. Launchtl voi itsessään hyväksyä komentoja komentoriviltä, vakiosyötteestä tai suorittaa interaktiivisesti. Pääkäyttäjän oikeuksilla launchctl: llä voidaan tehdä globaaleja muutoksia. launchctl kommunikoi launchdin kanssa Mach - spesifisen IPC-mekanismin kautta.
Ominaisuusluettelo (plist) on tiedostotyyppi, jota launchd käyttää ohjelman määrittämiseen. Kun launchd skannaa kansion tai työ lähetetään launchctl:llä, se lukee plist-tiedoston, joka kuvaa kuinka ohjelma käynnistetään.
Alla on luettelo yleisesti käytetyistä avaimista. Kaikki avaimet ovat valinnaisia, ellei toisin mainita. Täydellinen luettelo on Applen ohjesivulla launchd.plist [2] .
Avaimet | Tyyppi | Merkintä |
---|---|---|
Label | Linja | Työnimike. Sopimuksen mukaan työn otsikko on sama kuin plist-tiedoston nimi ilman .plist-tunnistetta. Vaaditaan. |
Program | Linja | Polku suoritettavaan tiedostoon. Hyödyllinen yksinkertaisissa laukaisuissa. Vähintään yksi Program- tai ProgramArguments-avain vaaditaan. |
ProgramArguments | Joukko merkkijonoja | Joukko merkkijonoja, jotka edustavat UNIX-komentoa. Ensimmäinen rivi on yleensä polku suoritettavaan tiedostoon, kun taas viimeiset rivit sisältävät valitsimia tai parametreja. Vähintään yksi Program- tai ProgramArguments-avain vaaditaan. |
UserName | linja
(oletusjuuri tai nykyinen käyttäjä) |
Työ suoritetaan annetun käyttäjänä, joka voi olla tai ei ole käyttäjä, joka lähetti sen käynnistettynä. |
OnDemand
(poistettu käytöstä 10.5 lähtien) |
looginen
(oletus KYLLÄ) |
Poistettu käytöstä 10.5 alkaen tehokkaammalla KeepAlive-vaihtoehdolla. Boolen lippu, joka määrittää, onko työ käynnissä jatkuvasti vai ei. |
RunAtLoad | looginen
(oletus EI) |
Boolen lippu, joka määrittää, käynnistetäänkö tehtävä välittömästi sen jälkeen, kun tehtävä on ladattu käynnistykseen. |
StartOnMount | looginen
(oletus EI) |
Boolen lippu, joka määrittää, suoritetaanko tehtävä, kun uusi tiedostojärjestelmä liitetään. |
QueueDirectories | Joukko merkkijonoja | Etsii hakemistosta uusia tiedostoja. Hakemiston on oltava tyhjä, ja se on palautettava tyhjään tilaan ennen kuin QueueDirectories suorittaa tehtävänsä uudelleen. |
WatchPaths | Joukko merkkijonoja | Katsoo tiedostojärjestelmän polusta muutosten varalta. Voi olla tiedosto tai kansio. |
StartInterval | kokonaisluku | Ajoittaa työn suoritettavaksi toistuvan aikataulun mukaan. Määrittää, kuinka monta sekuntia on odotettava ajojen välillä. |
StartCalendarInterval | Kokonaislukujen sanakirja
tai Joukko kokonaislukusanakirjoja |
Työn suunnittelu. Syntaksi on samanlainen kuin Cron |
RootDirectory | Linja | Työ sijoitetaan tähän hakemistoon ennen suorittamista. |
WorkingDirectory | Linja | Työ siirretään tähän hakemistoon ennen suorittamista. |
StandardInPath. |
Linja | Näppäimet käynnissä olevan prosessin tulo- ja tulostustiedostojen määrittämiseen. |
LowPriorityIO | looginen | Kerneli ytimelle, että tällä tehtävällä on alhainen prioriteetti tiedostojärjestelmän I/O:lle. |
AbandonProcessGroup | looginen
(oletus EI) |
Boolen lippu, joka määrittää, lopetetaanko aliprosessit, jotka aloitettiin launchd-toiminnolla aloitetusta tehtävästä, kun tehtävä päättyy. Hyödyllinen, kun lyhytkestoinen tehtävä aloittaa pitkäikäisen alitehtävän, mutta voi johtaa zombiprosesseihin. |
SessionCreate | looginen
(oletus EI) |
Boolen lippu, joka määrittää, luodaanko suojausistunto tehtävälle ja sen aliprosesseille. |
Kunkin Sockets-osiossa olevan avaimen nimi sijoitetaan työn ympäristöön, kun se ajetaan, ja kyseisen socketin tiedostokuvaaja on käytettävissä kyseisessä ympäristömuuttujassa. Tämä eroaa systemd-socket-aktivoinnista siinä, että työn kokoonpanon sisällä olevan socket-määrityksen nimi on kovakoodattu sovellukseen. Tämä protokolla on vähemmän joustava, vaikka se, kuten systemd, ei vaadi demonia koodaamaan alkuperäistä tiedostokuvaajaa (3 [3] vuodesta 2014 ).
Ohjelmiston on suunnitellut ja kirjoittanut Dave Zarzhitsky Applella . Yhtiö suunnitteli korvaavansa kaikki seuraavat macOS -ympäristössä -
Suurin osa näistä asioista hylättiin, kun launchd esiteltiin Mac OS X v10.4 :n (Tiger) kanssa.
Vuonna 2005 R. Tyler Croy lykkäsi FreeBSD :n käynnistämistä osana Google Summer of Code -projektia. Sitä ei voi käyttää PID 1:nä (vain istunnon alustus), eikä sitä normaalisti käytetä tällä alustalla. [neljä]
Vuonna 2006 Ubuntu Linux -jakelua harkittiin launchd:n käyttöä. Tämä vaihtoehto hylättiin, koska lähdekoodi oli Applen julkisen lisenssin alainen - kuvailtiin "väistämättömäksi lisenssiongelmaksi" [5] . Sen sijaan Ubuntu -kehittäjät kehittivät ja siirtyivät käyttämään Upstart -palvelunhallintatyökalua .
Elokuussa 2006 Apple julkaisi uudelleen Apache License -lisenssin version 2.0 alaisena helpottaakseen muiden avoimen lähdekoodin kehittäjien käyttöönottoa [6] . Suurin osa Linux - jakeluista käyttää systemd- tai Upstart -versiota tai jatkaa Initin käyttöä , ja myös BSD:n kaltaiset järjestelmät käyttävät edelleen Initiä .
Joulukuussa 2013 R. Tyler Croy ilmoitti aikovansa jatkaa työskentelyä FreeBSD :lle lanseeratun versionsa parissa , ja hänen "openlaunchd" Github -tietovarastonsa tuli myöhemmin aktiiviseksi [7] .
Vuonna 2014 alkaen OS X 10.10 :stä ja iOS 8 : sta Apple siirsi koodin ajettavaksi suljetun lähdekoodin libxpc:hen [8] .
Elokuussa 2015 Jordan Hubbard ja Kip Macy ilmoittivat FreeBSD-CURRENT-ytimeen perustuvan NextBSD :n lanseerauksesta lisäten Machin IPC:hen, Libdispatchin, notified, asld:n, launchd:n ja muita Darwinista johdettuja komponentteja, jotka sisältävät avoimen lähdekoodin macOS :lle. .
Versiot | Lisenssi | Sisällytettiin MacOS - versioon |
---|---|---|
käynnistyi 106 | Applen julkisen lähdekoodin lisenssi [9] | |
käynnistyi 106.3 | Applen julkisen lähdekoodin lisenssi [12] | |
aloitettu 106.10 | Applen julkisen lähdekoodin lisenssi [17] | |
aloitettu 106.13 | Applen julkisen lähdekoodin lisenssi [20] | |
aloitettu 106.14 | Applen julkisen lähdekoodin lisenssi [23] | |
aloitettu 106.20 | Applen julkisen lähdekoodin lisenssi [30] | |
laukaistiin 152 | Apache License 2.0 [35] | |
käynnistettiin 257 | Apache License 2.0 [36] | |
käynnistynyt 258.1 | Apache License 2.0 [39] |
|
käynnistyi 258.12 | Apache License 2.0 [41] | |
käynnistyi 258.18 | Apache License 2.0 [44] |
|
käynnistyi 258.19 | Apache License 2.0 [46] |
|
käynnistyi 258.22 | Apache License 2.0 [48] |
|
käynnistyi 258.25 | Apache License 2.0 [50] |
|
käynnistettiin 328 | Apache License 2.0 [52] | |
käynnistyi 329.3 | Apache License 2.0 [56] |
|
käynnistetty 329.3.1 | Apache License 2.0 [58] |
|
käynnistetty 329.3.2 | Apache License 2.0 [60] |
|
käynnistetty 329.3.3 | Apache License 2.0 [62] | |
käynnistyi 392.18 | Apache License 2.0 [66] | |
käynnistyi 392.35 | Apache License 2.0 [69] |
|
käynnistyi 392.36 | Apache License 2.0 [71] |
|
käynnistyi 392.38 | Apache License 2.0 [73] |
|
käynnistyi 392.39 | Apache License 2.0 [75] |
|
käynnistyi 442.21 | Apache License 2.0 [77] | |
käynnistetty 442.26.2 | Apache License 2.0 [80] | |
käynnistetty 842.1.4 | Apache License 2.0 [85] | |
käynnistetty 842.90.1 | Apache License 2.0 [88] | |
käynnistetty 842.92.1 | Apache License 2.0 [91] |
Mac käyttöjärjestelmä | |
---|---|
Sovellukset | |
Apuohjelmat |
|
Tekniikka ja käyttöliittymä _ |
|