Appleblog.cz

Appleblog.cz

Mar 7 / 12:55am

Launchd - start Mac OS X

Mac OS X je unixový operační systém, start systému proto probíhá obdobně jako u ostatních unixů a klonů unixu. Od verze 10.4 začal Apple místo init a rc.d skriptů používat vlastní framework launchd. Zapomeňte na init, rc.d runlevely, crontab, chroot, xinetd i inetd, launchd se postará o vše potřebné. 

Po zavedení jádra systému je jako první proces s ID 1 spuštěn launchd. Z konfiguračních plist souborů umístěných v adresářích /System/Library/LaunchDaemons a /Library/LaunchDaemons zjistí informace o daemonech, které má spustit při startu (daemon je označení pro program, který běží dlouhodobě na pozadí a zajišťuje chod určité služby). Podle konfigurace daemona buď přímo spustí, nebo pro něj zaregistruje požadované sockety.

Obdobně zajišťuje launchd spouštění procesů při přihlášení uživatele. V tomto případě se konfigurační soubory nachází v adresářích /Library/LaunchAgents, /System/Library/LaunchAgents a ~/Library/LaunchAgents.

Formát konfiguračních souborů launchd umožňuje definovat i chování daemonů v rúzných situacích - lze nastavit spouštění v případě že existuje definovaný soubor, je připojen diskový svazek, umí spouštět procesy v časových intervalech. Daemon tedy vůbec nemusí být spuštěn přímo při startu systému, ale může "čekat v záloze" až na určitou akci a launchd se postará o jeho spuštění. Pomocí konfiguračního souboru lze definovat:

  • název daemonu a předávané parametry
  • pod jakým uživatelem a skupinou se má daemon spouštět
  • změnu kořenového adresáře (chroot)
  • akce na základě kterých se daemon spustí (např. vytvoření souboru)
  • čas a opakování spuštění (např. každý den v určitou hodinu)
  • limit paměti, CPU, počtu procesů daemona
  • konfigurace socketů pro spouštění v režimu super-daemona (obdoba xinetd/inetd)

Kompletní popis syntaxe plist souborů je uveden v man stránce launchd.plist(5). Ovládání launchd (ruční spuštění/vypnutí daemona, výpis jobů atd.) lze provádět pomocí utility launchctl.

Kromě spouštění daemonů pomocí Launchd umožňuje Mac OS X také spouštět aplikace pomocí StartupItems. V adresářích /System/Library/StartupItems a /Library/StartupItems mohou aplikace nebo uživatel vytvořit podadresáře se skripty pro spuštění aplikace (typicky tuto možnost používá např. MySQL). Každý adresář musí kromě spouštěcího skriptu obsahovat také konfigurační soubor StartupParameters.plist. Spouštění aplikací po přihlášení uživatele lze nastavit v System Preferences / Accounts / Login Items. Konfigurační soubor je v ~/Library/Preferences/loginwindow.plist. Jak je to s runlevely? Mac OS X je vůbec nepoužívá, o ukončení systému a odeslání SIGTERM signálu se stará opět launchd.

I když je launchd Open Source aplikace, nikdy se nerozšířil mimo Mac OS X (pouze v roce 2006 bylo zvažováno jeho zařazení do linuxové distribuce Ubuntu, kvůli použité licenci Apple Public Source z toho nakonec sešlo, ačkoli Apple ještě tentýž rok licenci změnil na Apache 2.0 licenci).

Více informací:

Man stránka launchd http://developer.apple.com/mac/library/documentation/Darwin/Reference/ManPage... 

Man stránka s popisem formátu plist konfiguračních souborů launchd http://developer.apple.com/mac/library/documentation/Darwin/Reference/ManPage....plist

Obecné informace o startu Mac OS X  http://developer.apple.com/mac/library/documentation/MacOSX/Conceptual/BPSyst...