launchdデーモン管理

macOSのサービス管理システム。ログイン時の自動起動、クラッシュ時の自動再起動、バックグラウンドサービスの管理を担う。SysVinit(Linux)やsystemdに相当するmacOS固有の仕組み。

種別

種別 配置場所 権限 用途
LaunchAgent ~/Library/LaunchAgents/ ユーザー ログインユーザーのサービス
LaunchDaemon /Library/LaunchDaemons/ root システム全体のサービス

一般的なユーザーサービス(TTSデーモン、開発ツールの常駐プロセス等)はLaunchAgentとして配置する。

plistファイルの構造

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist ...>
<plist version="1.0">
<dict>
    <key>Label</key>
    <string>com.example.myservice</string>
    <key>ProgramArguments</key>
    <array>
        <string>/path/to/executable</string>
        <string>--arg</string>
    </array>
    <key>RunAtLoad</key>
    <true/>
    <key>KeepAlive</key>
    <true/>
</dict>
</plist>

主要キー

キー 意味
Label サービスの一意識別子(逆ドメイン表記が慣例)
ProgramArguments 実行コマンドと引数
EnvironmentVariables 環境変数の設定
RunAtLoad ロード時(ログイン時)に自動起動
KeepAlive クラッシュ時に自動再起動
StandardOutPath 標準出力のログファイルパス

管理コマンド

# 登録・起動
launchctl load ~/Library/LaunchAgents/com.example.service.plist

# 停止・登録解除
launchctl unload ~/Library/LaunchAgents/com.example.service.plist

# 状態確認
launchctl list | grep <サービス名>

# 強制再起動
launchctl kickstart -k gui/$(id -u)/<Label>

KeepAlive の効果

KeepAlive: true を設定すると、プロセスがクラッシュしても自動的に再起動する。これにより:

用途例

関連