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