環境
CentOS 7
どんな状況?
- systemdでサービスを起動したい。
- その時の実行権限がrootじゃない。
- 故に
/var/run/[dir]
を作成。- もちろん
chown
で[dir]の権限を実行ユーザにしている。
- もちろん
- 作成した[dir]に、pidファイルやsockファイルが作られたりする。
何が問題?
- CentOS 7 は、rebootした時、
/var/run
配下を全部消す - 参考 : お前らもさっさとハマって泣くべきCentOS7の落とし穴4つ
- 次回起動したら、前回作成したディレクトリが無いので、エラー
対策
/etc/systemd/system/[サービス名].service
PermissionsStartOnly=true
ExecStartPre=/usr/bin/mkdir /var/run/[dir]
ExecStartPre=/usr/bin/chown -R [実行ユーザ]:[実行グループ] /var/run/[dir]
ExecStopPost=/usr/bin/rm -rf /var/run/[dir]
サービス起動前に[dir]を作成
サービス終了時に[dir]を削除(次回起動時にエラーになるため)
参考 : Handling /var/run with systemd
参考 : Systemd入門(4) - serviceタイプUnitの設定ファイル