Location via proxy:   [ UP ]  
[Report a bug]   [Manage cookies]                

Launchdとは? わかりやすく解説

launchd

出典: フリー百科事典『ウィキペディア(Wikipedia)』 (2021/11/09 19:49 UTC 版)

ナビゲーションに移動 検索に移動
launchd
作者 Apple
初版 2005年4月29日
プログラミング
言語
C言語
対応OS macOS, FreeBSD
サポート状況 開発中
種別 システムスタートアップソフトウェア
ライセンス Apache License 2.0
公式サイト http://www.opensource.apple.com/source/launchd/
テンプレートを表示

launchdは、デーモンアプリケーションプロセススクリプトの起動・停止・管理を行う、オープンソースのサービス管理フレームワークである。AppleのDave Zarzyckiによって作られ、Mac OS X Tiger (Mac OS X v10.4) で導入された。Apache Licenseのもとで公開されている。

launchdデーモンは基本的に以下を置き換えるものである:

Appleはlaunchdを推進し、上記のすべてのサービスを廃止するとした。[1]

これらのデーモンが扱っていたほとんどのプロセスが、Mac OS X v10.4でlaunchdに移行された。すべてのlaunch serviceを一つのプログラムに統合することで、launchdは遅いコンピュータでもブート時間を著しく短くする。

コンポーネント

launchdシステムには、launchdとlaunchctlという二つの主なプログラムがある。

launchdはシステムレベルとユーザレベルの両方でデーモンを管理する。xinetdと同様に、launchdはオンデマンドでデーモンを起動できる。またwatchdogdのように、デーモンが確実に動作しつづけているかを監視する。macOSにおいて、launchdはPID 1としてinitのかわりにブート時のシステムの開始を取り扱う。

設定ファイルはlaunchdが実行するサービスのパラメータを定義する。約30の設定可能なキーをもつプロパティリストファイルが、ライブラリフォルダ以下のLaunchAgentsとLaunchDaemonsというサブディレクトリに置かれる。

launchctlはデーモンのロードとアンロード、launchdが管理するジョブの開始と停止、launchdや子プロセスのためのシステム利用統計の取得、環境設定に使用されるコマンドラインアプリケーションである。

launchd

launchdには、システムのブートと、サービスをロードし維持するという二つの主なタスクがある。

PowerPC MacにおけるMac OS X Tigerのシステムの起動の概略を以下に示す。(Intel Macでは、Open FirmwareEFIに、BootXboot.efi にそれぞれ置き換えられている):

  1. Open Firmwareがハードウェアを初期化し、それからBootXをロードする。
  2. BootXがカーネルをロードし、スピンカーソルを表示、すべての必要なカーネル機能拡張をロードする。
  3. カーネルがlaunchdをロードする。
  4. launchdは /etc/rc を実行し、/System/Library/LaunchDaemons/Library/LaunchDaemons を参照して、必要に応じてplistにもとづいた動作を行い、ログインウインドウを起動する。

ステップ4でlaunchdはジョブを実行するために二つのフォルダを参照する。LaunchDaemonsフォルダには、rootとして実行する(ふつうバックグラウンドの)プロセスの項目がある。LaunchAgentsフォルダには、ユーザかユーザランドのコンテキストで実行される、エージェントアプリケーションと呼ばれるジョブがある。これらはスクリプトかフォアグランド項目かもしれないし、ユーザインタフェースを含めることもできる。これらのディレクトリはすべてmacOSのライブラリフォルダの中に置かれる。

launchdは、ブート時にすべてのデーモンを立ち上げるとはかぎらない点でSystemStarterと非常に異なっている。launchdの重要な考えかたであり、またxinetdと類似している点が、デーモンをオンデマンドで起動するということである。ブート時にジョブplistを参照したとき、launchdはそれらのジョブで要求されたすべてのポートを確保しlistenする。plistに"OnDemand"キーが指定されると、そのときデーモンは実際にはロードされず、launchdがポートをlistenして必要に応じてデーモンを起動したり終了したりする。デーモンがロードされたあと、launchdはその経過を追い、必要なあいだ確実に動作を継続させる。この方式はwatchdogdに似ており、プロセスがかってにforkしたりデーモン化したりしないようにするというwatchdogdの要件と共通している。もしプロセスがバックグラウンドに入ると、launchdは追跡を失い、プロセスの再起動を試みる。

その結果、Mac OS X Tigerはこれまでよりずっと速くブートする。システムはデーモンを実際に立ち上げるのではなく、登録だけすればよい。事実、ブート中にみえるプログレスバーはほんとうに時間の経過以外なにも示さない(WaitingForLoginWindowと名づけられた[2])見せかけのアプリケーションである。

launchdのブートの中でいちばんの管理の難所は依存関係である。SystemStarterには、起動項目のplistの中に"Uses", "Requires", "Provides" キーを用いたとてもシンプルな依存関係のシステムがあった。Tigerにおいてソフトウェアの立ち上げの依存関係を確立するとき、二つの主なやりかたがある。プロセス間通信を使うと、デーモンどうしのあいだで互いに通信して依存関係を解決することが許容される。あるいは、ファイルやファイルパスの変更を監視することもできる。プロセス間通信を使うことは、SystemStarterのキーよりもはるかにとらえにくいもので開発者により多くの負担をもとめるが、しかしより簡潔で速い起動に結びつくかもしれない。SystemStarterはまだサポートされているオプションだが、Mac OS X Tigerではその重要性は減っており、将来的には利用できなくなるかもしれない。

launchctl

既存のしくみによるサービス制御についての不満の一つは、それらを集中管理するための方法がなく、OS上に散らばっているということである。Appleはlaunchctlでこれに対処した。

launchctlはそれ自身、コマンドラインや、標準入力、対話モードから操作可能なコマンドである。~/.launchd.conf/etc/launchd.conf に書くことでコマンドを保存できる。スーパーユーザー権限でlaunchctlはシステム全体の変更ができる。

プロパティリスト

プロパティリスト (plist) はAppleがプログラムの設定に用いる形式である。launchdがフォルダを参照したときやlaunchctlを使ってジョブがサブミットされたとき、どのようにプログラムを実行するかが書かれたplistファイルを読む。

よく使われるキーを以下に示す。すべてが載ったリストは、launchd.plistについてのAppleによるマニュアルを参照。[3]

キー 説明 必須かどうか
Label ジョブの名称。慣習により、ジョブの名称は.plist拡張子を除いたplistのファイル名とおなじ。 必須。
Program 実行ファイルへのパス。シンプルな起動に役立つ。 ProgramかProgramArgumentsのどちらか一つが必須。
ProgramArguments unixコマンドを表した文字列。はじめの文字列はふつう実行ファイルへのパスで、あとの文字列はオプションやパラメータを含む。
UserName ここで与えられたユーザでジョブを実行する。必ずしもそれをlaunchdにサブミットしたユーザでなくてもよい。 オプション。デフォルトではrootかカレントユーザ。
OnDemand 10.5では非推奨。ジョブを持続的に実行するかどうかを定義するブーリアンフラグ。 オプション。デフォルトではtrue。
RunAtLoad launchdにジョブがロードされたときすぐにタスクを起動するかどうかを定義するブーリアンフラグ。 オプション。デフォルトではfalse。
StartOnMount 新しいファイルシステムがマウントされたときにタスクを起動するかどうかを定義するブーリアンフラグ。
QueueDirectories 新しいファイルがないかディレクトリを監視する。開始するにはディレクトリは空でなければならない。また、QueueDirectoriesがふたたびタスクを起動するまえに空の状態にもどさなければならない。 オプション。
WatchPaths 変更がないかファイルかフォルダのパスを監視する。
StartInterval ジョブをくり返して実行するスケジュールにする。実行のあいだのウェイト秒数として指定される。
StartCalendarInterval ジョブスケジューリング。構文はcronと同様。
RootDirectory ジョブを実行するまえにこのディレクトリにchrootする。
WorkingDirectory ジョブを実行するまえにこのディレクトリにchdirする。
StandardInPath, StandardOutPath, StandardErrorPath 立ち上げたプロセスのための入出力ファイルを定義するキー。
LowPriorityIO ファイルシステムI/Oをするときタスクの優先度が低いことをカーネルにしらせる。
AbandonProcessGroup launchdによって立ち上げられたタスクが起動したサブプロセスを、タスクがおわったときにkillするかどうかを定義するブーリアンフラグ。短いタスクが長いサブタスクを起動するところで役立つが、ゾンビプロセスを生じるかもしれない。 オプション。デフォルトではfalse。

macOS以外での使用

Google Summer of Code Project in 2005の一環としてFreeBSDに移植された。

2006年にUbuntuはlaunchdを使用することを考えていたが、当時はApple Public Source Licenseで公開されていたので「回避不能なライセンス問題」があるとしてこのオプションはリジェクトされた。[4]

2006年8月にAppleは、launchdをほかのオープンソース開発者がより簡単に採用できるようApache License, Version 2.0のもとでライセンスした。[5]

関連項目

参考文献

  1. ^ Mac OS X Manual Page For launchd(8)”. 2008年1月8日閲覧。
  2. ^ Daring Fireball: Tiger Details
  3. ^ Mac OS X Manual Page For launchd.plist(5)
  4. ^ ReplacementInit”. UbuntuWiki. 2007年7月2日閲覧。
  5. ^ Prabhakar, Ernest (2006年8月7日). “Apple Opens Up: Kernel, Mac OS Forge, iCal Server, Bonjour, Launchd”. 2007年7月2日閲覧。

外部リンク



launchd

出典: フリー百科事典『ウィキペディア(Wikipedia)』 (2021/11/09 19:49 UTC 版)

「launchd」の記事における「launchd」の解説

launchdには、システムブートと、サービスロードし維持するという二つ主なタスクがある。 PowerPC MacにおけるMac OS X Tigerシステム起動概略を以下に示す。(Intel Macでは、Open FirmwareEFIに、BootXは boot.efi にそれぞれ置き換えられている): Open Firmwareハードウェア初期化し、それからBootXロードするBootXカーネルロードし、スピンカーソルを表示すべての必要なカーネル機能拡張ロードするカーネルがlaunchdをロードする。 launchdは /etc/rc を実行し、/System/Library/LaunchDaemons と /Library/LaunchDaemons を参照して必要に応じてplistにもとづいた動作行い、ログインウインドウを起動するステップ4でlaunchdはジョブ実行するために二つフォルダ参照する。LaunchDaemonsフォルダには、rootとして実行する(ふつうバックグラウンドの)プロセスの項目がある。LaunchAgentsフォルダには、ユーザユーザランドコンテキスト実行される、エージェントアプリケーションと呼ばれるジョブがある。これらはスクリプトフォアグランド項目かもしれないし、ユーザインタフェース含めることもできる。これらのディレクトリはすべてmacOSのライブラリフォルダの中に置かれる。 launchdは、ブート時にすべてのデーモン立ち上げるとはかぎらない点でSystemStarterと非常に異なっている。launchdの重要な考えかたであり、またxinetd類似している点が、デーモンオンデマンド起動するということである。ブート時にジョブplist参照したとき、launchdはそれらのジョブ要求されすべてのポート確保しlistenする。plistに"OnDemand"キー指定されると、そのときデーモン実際にロードされず、launchdがポートlistenして必要に応じてデーモン起動した終了したりする。デーモンロードされたあと、launchdはその経過追い必要なあいだ確実に動作継続させるこの方式はwatchdogdに似ており、プロセスかってにforkしたりデーモン化したりしないようにするというwatchdogdの要件共通している。もしプロセスバックグラウンドに入ると、launchdは追跡失いプロセス再起動試みる。 その結果Mac OS X Tigerこれまでよりずっと速くブートする。システムデーモン実際に立ち上げるではなく、登録だけすればよい。事実ブート中にみえるプログレスバーほんとうに時間の経過以外なにも示さない(WaitingForLoginWindowと名づけられた)見せかけのアプリケーションである。 launchdのブートの中でいちばんの管理難所依存関係である。SystemStarterには、起動項目plist中に"Uses", "Requires", "Provides" キー用いたとてもシンプルな依存関係システムがあった。Tigerにおいてソフトウェア立ち上げ依存関係確立するとき、二つ主なやりかたがある。プロセス間通信を使うと、デーモンどうしのあいだで互いに通信して依存関係解決することが許容される。あるいは、ファイルファイルパス変更監視するともできるプロセス間通信を使うことは、SystemStarterのキーよりもはるかにとらえにくいもの開発者により多く負担をもとめるが、しかしより簡潔速い起動結びつくかもしれない。SystemStarterはまだサポートされているオプションだが、Mac OS X Tigerではその重要性減っており、将来的には利用できなくなるかもしれない

※この「launchd」の解説は、「launchd」の解説の一部です。
「launchd」を含む「launchd」の記事については、「launchd」の概要を参照ください。

ウィキペディア小見出し辞書の「Launchd」の項目はプログラムで機械的に意味や本文を生成しているため、不適切な項目が含まれていることもあります。ご了承くださいませ。 お問い合わせ


英和和英テキスト翻訳>> Weblio翻訳
英語⇒日本語日本語⇒英語
  

辞書ショートカット

すべての辞書の索引

「Launchd」の関連用語

Launchdのお隣キーワード
検索ランキング

   

英語⇒日本語
日本語⇒英語
   



Launchdのページの著作権
Weblio 辞書 情報提供元は 参加元一覧 にて確認できます。

   
ウィキペディアウィキペディア
All text is available under the terms of the GNU Free Documentation License.
この記事は、ウィキペディアのlaunchd (改訂履歴)の記事を複製、再配布したものにあたり、GNU Free Documentation Licenseというライセンスの下で提供されています。 Weblio辞書に掲載されているウィキペディアの記事も、全てGNU Free Documentation Licenseの元に提供されております。
ウィキペディアウィキペディア
Text is available under GNU Free Documentation License (GFDL).
Weblio辞書に掲載されている「ウィキペディア小見出し辞書」の記事は、Wikipediaのlaunchd (改訂履歴)の記事を複製、再配布したものにあたり、GNU Free Documentation Licenseというライセンスの下で提供されています。

©2024 GRAS Group, Inc.RSS