(Translated by https://www.hiragana.jp/)
launchd - Wikipedia コンテンツにスキップ

launchd

chūdiăn: フリーbaĭshìdiăn『ウィキペディア(Wikipedia)』
launchd
zuòzhě Apple
chūbăn 2005nián4yuè29
プログラミング
yán
Cyán
duìyīngOS macOS, FreeBSD
サポートzhuàngkuàng kaīzhōng
zhŏngbié システムスタートアップソフトウェア
ライセンス Apache License 2.0
gōngshìサイト http://www.opensource.apple.com/source/launchd/
テンプレートをbiaŏshì

launchdは、デーモンアプリケーションプロセススクリプトdòngtíngzhĭguănxíngう、オープンソースのサービスguănフレームワークである。AppleのDave Zarzyckiによってzuòられ、Mac OS X Tiger (Mac OS X v10.4)daŏされた。Apache Licenseのもとでgōngkaīされている。

launchdデーモンběndexiàzhìhuànえるものである:

Appleはlaunchdをtuījìnし、shàngのすべてのサービスをfeìzhĭするとした。[1]

これらのデーモンがっていたほとんどのプロセスが、Mac OS X v10.4でlaunchdにxíngされた。すべてのlaunch serviceをつのプログラムにtŏngすることで、launchdはchíいコンピュータでもブートshíjiānzhùしくduănくする。

コンポーネント

[biān]

launchdシステムには、launchdとlaunchctlというèrつのzhŭなプログラムがある。

launchdはシステムレベルとユーザレベルのliăngfāngデーモンguănする。xinetdtóngyàngに、launchdはオンデマンドでデーモンをdòngできる。またwatchdogdのように、デーモンがquèshídòngzuòしつづけているかをjiānshìする。macOSにおいて、launchdはPID 1としてinitのかわりにブートshíのシステムのkaīshĭう。

shèdìngファイルはlaunchdがshíxíngするサービスのパラメータをdìngする。yuē30のshèdìngnéngなキーをもつプロパティリストファイルが、ライブラリフォルダxiàのLaunchAgentsとLaunchDaemonsというサブディレクトリにzhìかれる。

launchctlはデーモンのロードとアンロード、launchdがguănするジョブのkaīshĭtíngzhĭ、launchdやプロセスのためのシステムyòngtŏnghuánjìngshèdìng使shĭyòngされるコマンドラインアプリケーションである。

launchdには、システムのブートと、サービスをロードしweíchíするというèrつのzhŭなタスクがある。

PowerPC MacにおけるMac OS X TigerのシステムのdònggaìlWèxiàshìす。(Intel Macでは、Open FirmwareEFIに、BootXboot.efi にそれぞれzhìhuànえられている):

  1. Open Firmwareがハードウェアをchūhuàし、それからBootXをロードする。
  2. BootXがカーネルをロードし、スピンカーソルをbiaŏshì、すべてのyaòカーネルnéngkuòzhāngをロードする。
  3. カーネルがlaunchdをロードする。
  4. launchdは /etc/rcshíxíngし、/System/Library/LaunchDaemons/Library/LaunchDaemonscānzhaòして、yaòyīngじてplistにもとづいたdòngzuòxíngい、ログインウインドウをdòngする。

ステップ4でlaunchdはジョブをshíxíngするためにèrつのフォルダをcānzhaòする。LaunchDaemonsフォルダには、rootとしてshíxíngする(ふつうバックグラウンドの)プロセスのxiàngがある。LaunchAgentsフォルダには、ユーザかユーザランドのコンテキストでshíxíngされる、エージェントアプリケーションとばれるジョブがある。これらはスクリプトかフォアグランドxiàngかもしれないし、ユーザインタフェースをhánめることもできる。これらのディレクトリはすべてmacOSのライブラリフォルダのzhōngzhìかれる。

launchdは、ブートshíにすべてのデーモンをshàngげるとはかぎらないdiănでSystemStarterとfeīchángなっている。launchdのzhòngyaòkaŏえかたであり、またxinetdleìしているdiănが、デーモンをオンデマンドでdòngするということである。ブートshíにジョブplistをcānzhaòしたとき、launchdはそれらのジョブでyaòqiúされたすべてのポートをquèbaŏしlistenする。plistに"OnDemand"キーがzhĭdìngされると、そのときデーモンはshíにはロードされず、launchdがポートをlistenしてyaòyīngじてデーモンをdòngしたりzhōngliaŏしたりする。デーモンがロードされたあと、launchdはそのjīngguòzhuīい、yaòなあいだquèshídòngzuòさせる。このfāngshìwatchdogdており、プロセスがかってにforkしたりデーモンhuàしたりしないようにするというwatchdogdのyaòjiàngòngtōngしている。もしプロセスがバックグラウンドにると、launchdはzhuīshīい、プロセスのzaìdòngshìみる。

そのjiéguŏ、Mac OS X Tigerはこれまでよりずっとくブートする。システムはデーモンをshíshàngげるのではなく、dēngだけすればよい。shìshí、ブートzhōngにみえるプログレスバーはほんとうにshíjiānjīngguòwaìなにもshìさない(WaitingForLoginWindowとmíngづけられた[2]jiànせかけのアプリケーションである。

launchdのブートのzhōngでいちばんのguănnánsuŏcúnguānである。SystemStarterには、dòngxiàngのplistのzhōngに"Uses", "Requires", "Provides" キーをyòngいたとてもシンプルなcúnguānのシステムがあった。Tigerにおいてソフトウェアのshàngげのcúnguānquèするとき、èrつのzhŭなやりかたがある。プロセスjiāntōngxìn使shĭうと、デーモンどうしのあいだでいにtōngxìnしてcúnguānjiějuéすることがróngされる。あるいは、ファイルやファイルパスのbiàngèngjiānshìすることもできる。プロセスjiāntōngxìn使shĭうことは、SystemStarterのキーよりもはるかにとらえにくいものでkaīzhěによりduōくのdànをもとめるが、しかしよりjiănjiédòngjiéびつくかもしれない。SystemStarterはまだサポートされているオプションだが、Mac OS X Tigerではそのzhòngyaòxìngjiănっており、jiānglaídeにはyòngできなくなるかもしれない。

launchctl

[biān]

cúnのしくみによるサービスzhìについてのmănつは、それらをzhōngguănするためのfāngがなく、OSshàngsànらばっているということである。Appleはlaunchctlでこれにduìchŭした。

launchctlはそれshēnコマンドラインや、biaōzhŭnduìhuàモードからcaōzuònéngなコマンドである。~/.launchd.conf/etc/launchd.confshūくことでコマンドをbaŏcúnできる。スーパーユーザーquánxiànでlaunchctlはシステムquánbiàngèngができる。

プロパティリスト

[biān]

プロパティリスト (plist) はAppleがプログラムのshèdìngyòngいるxíngshìである。launchdがフォルダをcānzhaòしたときやlaunchctlを使shĭってジョブがサブミットされたとき、どのようにプログラムをshíxíngするかがshūかれたplistファイルをむ。

よく使shĭわれるキーをxiàshìす。すべてがzaìったリストは、launchd.plistについてのAppleによるマニュアルをcānzhaò[3]

キー shuōmíng かどうか
Label ジョブのmíngchēngguànにより、ジョブのmíngchēng.plistkuòzhāngchúいたplistのファイルmíngとおなじ。
Program shíxíngファイルへのパス。シンプルなdòngつ。 ProgramかProgramArgumentsのどちらかつが
ProgramArguments unixコマンドをbiaŏしたwénliè。はじめのwénlièはふつうshíxíngファイルへのパスで、あとのwénlièはオプションやパラメータをhánむ。
UserName ここでえられたユーザでジョブをshíxíngする。ずしもそれをlaunchdにサブミットしたユーザでなくてもよい。 オプション。デフォルトではrootかカレントユーザ。
OnDemand 10.5ではfeītuījiăng。ジョブをchídeshíxíngするかどうかをdìngするブーリアンフラグ。 オプション。デフォルトではtrue。
RunAtLoad launchdにジョブがロードされたときすぐにタスクをdòngするかどうかをdìngするブーリアンフラグ。 オプション。デフォルトではfalse。
StartOnMount xīnしいファイルシステムがマウントされたときにタスクをdòngするかどうかをdìngするブーリアンフラグ。
QueueDirectories xīnしいファイルがないかディレクトリをjiānshìする。kaīshĭするにはディレクトリはkōngでなければならない。また、QueueDirectoriesがふたたびタスクをdòngするまえにkōngzhuàngtaìにもどさなければならない。 オプション。
WatchPaths biàngèngがないかファイルかフォルダのパスをjiānshìする。
StartInterval ジョブをくりfănしてshíxíngするスケジュールにする。shíxíngのあいだのウェイトmiaŏshùとしてzhĭdìngされる。
StartCalendarInterval ジョブスケジューリング。goùwéncrontóngyàng
RootDirectory ジョブをshíxíngするまえにこのディレクトリにchrootする。
WorkingDirectory ジョブをshíxíngするまえにこのディレクトリにchdirする。
StandardInPath, StandardOutPath, StandardErrorPath shàngげたプロセスのためのchūファイルをdìngするキー。
LowPriorityIO ファイルシステムI/Oをするときタスクのyoūxiānいことをカーネルにしらせる。
AbandonProcessGroup launchdによってshàngげられたタスクがdòngしたサブプロセスを、タスクがおわったときにkillするかどうかをdìngするブーリアンフラグ。duănいタスクがchángいサブタスクをdòngするところでつが、ゾンビプロセスをshēngじるかもしれない。 オプション。デフォルトではfalse。

macOSwaìでの使shĭyòng

[biān]

Google Summer of Code Project in 2005のhuánとしてFreeBSDzhíされた。

2006niánUbuntuはlaunchdを使shĭyòngすることをkaŏえていたが、dāngshíApple Public Source Licensegōngkaīされていたので「huínéngなライセンスwèn」があるとしてこのオプションはリジェクトされた。[4]

2006nián8yuèにAppleは、launchdをほかのオープンソースkaīzhěがよりjiăndāncaĭyòngできるようApache License, Version 2.0のもとでライセンスした。[5]

guānliánxiàng

[biān]

cānkaŏwénxiàn

[biān]
  1. ^ Mac OS X Manual Page For launchd(8)”. 2008nián1yuè8yuèlăn
  2. ^ Daring Fireball: Tiger Details
  3. ^ Mac OS X Manual Page For launchd.plist(5)
  4. ^ ReplacementInit”. UbuntuWiki. 2007nián7yuè2yuèlăn
  5. ^ Prabhakar, Ernest (2006nián8yuè7). “Apple Opens Up: Kernel, Mac OS Forge, iCal Server, Bonjour, Launchd”. 2007nián7yuè2yuèlăn

waìリンク

[biān]