systemd
centos7

systemdでサービスを動かす際、/var/runにディレクトリを作った時の落とし穴と対策

More than 1 year has passed since last update.

環境

CentOS 7

どんな状況?

  • systemdでサービスを起動したい。
  • その時の実行権限がrootじゃない。
  • 故に /var/run/[dir] を作成。
    • もちろん chown で[dir]の権限を実行ユーザにしている。
  • 作成した[dir]に、pidファイルやsockファイルが作られたりする。

何が問題?

対策

/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の設定ファイル