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処理ツールを使用してプログラム的に解析・変更する必要があるシステム管理者にとって価値があります。