ExecStart、ExecStop、およびExecディレクティブ

systemd Execディレクティブの詳細:ExecStart、ExecStartPre、ExecStartPost、ExecStop、ExecStopPost、ExecReload。プレフィックス修飾子、複数コマンド、エラー処理について学びます。

Infrastructure Services

詳細な説明

systemd Execディレクティブをマスターする

Exec*=ディレクティブはサービスの完全なライフサイクルを制御します。

Execディレクティブファミリー

ディレクティブ 実行タイミング
ExecStartPre= ExecStartの前
ExecStart= メインプロセス
ExecStartPost= ExecStart成功後
ExecReload= systemctl reload
ExecStop= systemctl stop
ExecStopPost= サービス停止後

プレフィックス修飾子

プレフィックス 意味
- 非ゼロ終了コードを無視(失敗しない)
+ rootとして実行(User=が設定されていても)

例:

ExecStartPre=-/usr/bin/docker stop mycontainer
ExecStartPre=+/usr/bin/mkdir -p /run/myapp

ユースケース

起動前の検証、起動後のヘルスチェック、グレースフルシャットダウン手順、停止後のクリーンアップを含む、プロダクションサービスの複雑なサービスライフサイクル管理を構築する場合に使用します。

試してみる — Systemd Unit File Generator

フルツールを開く