【レポート】

the inner universe of Leopard - 「rcの引退とlaunchdの強化」

6 表1: Leopardで追加された、launchdの新しい設定項目(キーワード)一覧

    白山貴之  [2007/12/11]
    利用例も含めた「表1: Leopardで追加された、launchdの新しい設定項目(キーワード)一覧」を、PDFデータとして用意しています。
    キー値の型内容
    AbandonProcessGrouptrueまたはfalselaunchdはプロセスが終了したときに、残留している同じプロセスグループのプロセスを全て強制終了させる。
    このキーが定義され、値がtrueの場合、この強制終了処理が抑制される
    EnableGlobbingtrueまたはfalseProgramArgumentsで指定されているコマンドおよびその引数について、シェルと同等のglobの展開を行うかを指定
    ExitTimeOut整数値launchdがジョブを終了させるときに、SIGKILLを送るまでの待ち時間を指定する。無指定時は20秒後にSIGKILLが送付される。
    0を指定するとSIGKILLを送付することがなくなり、無限に終了を待ち続ける
    HopefullyExitsFirsttrueまたはfalseこの値がtrueの場合、シャットダウン時の終了処理時に、早期にジョブの終了処理が行われる
    HopefullyExitsLasttrueまたはfalseこの値がtrueの場合、シャットダウン時の終了処理時に、ジョブの終了処理が他のジョブに比べ後の方で行われるようになる
    KeepAlivetrueまたはfalse、または以下のサブキーを持つディクショナリこのlaunch.plistで定義されるジョブが、1度起動したら継続的に実行されるのか、あるいはリクエストの度ごとに起動されるのかといった情報を定義する。
    デフォルトではfalseが設定されており、リクエストごとに指定のプログラムが起動される。
    trueの場合は、1度起動したらそれが終了するまで次のプログラムは実行されない。
    true、falseではなくディクショナリが値として設定された場合、ディクショナリの中の条件のどれかが成立した時にプログラムが実行されていなければそれを起動する
    サブキー
    NetworkStatetrueまたはfalse値がtrueの場合、ループバック以外のデバイスが有効で、IPv4かIPv6のIPアドレスが割り当てられている間に限り、プログラムの実行が行われる。
    falseの場合は逆に、上位のネットワーク状態が成立していないときに限りジョブが実行される
    OtherJobEnabledtrueまたはfalseを値として持つディクショナリ値となるディクショナリは、他のジョブのラベルをキーに、true/falseを値に持つ。
    ディクショナリの中のtrueを値に持つジョブが有効である、あるいはfalseを引数によるジョブが無効である場合に、ジョブの実行が行われる
    PathStatetrueまたはfalseを値として持つディクショナリ値となるディクショナリは、パスをキーにtrue/falseを値に持つ。
    ディクショナリの中のtrueを引数に持つパスが存在する、あるいはfalseを引数に持つパスが存在しない場合に、ジョブの実行が行われる。
    これはロックファイルの検知などに有用な機能である
    SuccessfulExittrueまたはfalse値がtrueの場合、直前に終了した同ジョブのプロセスが正常終了(戻り値が0)の場合に限り、再起動を行う。
    falseの場合は逆に、正常終了以外の場合にのみ再起動を実施する
    LaunchOnlyOncetrueまたはfalseこの値がtrueの場合、指定のジョブはただ1度だけしか実行処理が行われないことが保証される。
    例えば、OSそのものを再起動しない限り安全に再実行できないジョブの場合は、このキーを定義し、trueをセットすべき
    LimitLoadFromHosts文字列の配列値の配列で指定されたホスト"以外"でのみ実行されるように制限される
    LimitLoadToHosts文字列の配列値の配列で指定されたホストでのみ実行されるように制限される
    LimitLoadToSessionType文字列の配列文字列で指定されたセッションタイプでのみ実行される。
    なお、現在定義されているセッションタイプは以下の通り
    Aqua
    LoginWindow
    Background
    StandardIO
    System
    MachServicesディクショナリ値のディクショナリで指定された名前のMachIPCのサービスをbootstrapサブシステムに登録を行う。
    値となるディクショナリはサービス名をキーに、true/falseもしくは以下のサブキーを持つディクショナリを値に持つ
    サブキー
    HideUntilCheckIntrueまたはfalseこのキーが定義され、値がtrueの場合、対応するサービス名の予約だけが行われ、サービスがチェックインされるまでbootstrap_look_up()関数によるMachポートの取得が失敗するように設定される
    ResetAtClosetrueまたはfalse値がfalseの場合、サービス名に対応するMachポートは1度登録されたものが再利用される。
    値がtrueの場合、ポートの受信兼を持つタスクが終了した際、クライアント側にポートが失われた通知が送られる。その後、bootstrap_look_up()関数などを使ってクライアントが再び接続を行った場合、ポートが自動的に再生成される
    StartOnMounttrueまたはfalseこの値がtrueの場合、何らかのファイルシステムのマウントが発生する度にジョブが実行される
    ThrottleInterval整数値launchdでは短期的なプロセスと終了のループが発生してシステムに高負荷が発生するのを回避するため、デフォルトでは1度起動してから10秒間は起動したプロセスが終了しても再起動を行わない。
    ThrottleIntervalはこのポリシーを調整し、10秒にかわり値に指定した秒間での再起動に書き換える
    WaitForDebuggertrueまたはfalseこの値がtrueの場合、ジョブの実行時に、起動したプロセスにデバッガをアタッチできるよう、待ちを発生させる
    変更/廃止されたキー
    InitGroupstrueまたはfalsetrueの場合、ジョブの実行時にinitgroups(3)を使ったグループのアクセス権の初期化設定が行われる。なお、UserNameのキーが設定されていない場合、この処理は行われないので注意。
    このキーはTigerでも存在したが、デフォルト値が変更されており、TIgerではfalseだったのがLeopardではtrueに変更されている
    OnDemandtrueまたはfalseより表現力の高い、KeepAliveキーワードで置き換えられた
    関連したタグ

    新着記事

    特設サイトの情報

      人気記事

      一覧

        イチオシ記事

        新着記事

        特別企画

        マイナビニュースマガジン