Launchd KeepAlive設定をJSONに変換する

launchd plistファイルのKeepAliveディクショナリをJSONに変換します。KeepAliveの各サブキーとブーリアン/ディクショナリ形式を理解します。

macOS Config

詳細な説明

Launchd KeepAlive:シンプル形式と複雑形式

launchd plistのKeepAliveキーは、単純なブーリアンまたは条件付き再起動ルールを持つディクショナリのいずれかになります。この二重性は興味深い変換ケースです。

シンプルなブーリアン形式

<key>KeepAlive</key>
<true/>

これはJSONで"KeepAlive": trueになります。サービスが終了するたびに無条件で再起動されます。

ディクショナリ形式

<key>KeepAlive</key>
<dict>
  <key>SuccessfulExit</key>
  <false/>
  <key>NetworkState</key>
  <true/>
  <key>PathState</key>
  <dict>
    <key>/tmp/run-service</key>
    <true/>
  </dict>
</dict>

JSON出力(ディクショナリ形式)

{
  "KeepAlive": {
    "SuccessfulExit": false,
    "NetworkState": true,
    "PathState": {
      "/tmp/run-service": true
    }
  }
}

条件付き再起動ルール

サブキー 意味
SuccessfulExit 非ゼロ終了時のみ再起動(falseの場合)
NetworkState ネットワーク利用可能時に再起動(trueの場合)
PathState ファイルの存在に基づいて再起動
Crashed クラッシュ後のみ再起動(trueの場合)

Plistの型の柔軟性

この例は、同じplistキー(KeepAlive)が設定のニーズに応じてブーリアンまたはディクショナリのいずれかになり得ることを示しています。JSON表現はこの柔軟性を保持します。

ユースケース

launchdジョブのKeepAliveルールをJSON処理ツールを使用してプログラム的に解析・変更する必要があるシステム管理者にとって価値があります。

試してみる — Plist ↔ JSON Converter

フルツールを開く