この(短縮された)systemdサービスファイルに問題があります。
[Unit]
Description=control FOO daemon
After=syslog.target network.target
[Service]
Type=forking
User=FOOd
Group=FOO
ExecStartPre=/bin/mkdir -p /var/run/FOOd/
ExecStartPre=/bin/chown -R FOOd:FOO /var/run/FOOd/
ExecStart=/usr/local/bin/FOOd -P /var/run/FOOd/FOOd.pid
PIDFile=/var/run/FOOd/FOOd.pid
[Install]
WantedBy=multi-user.target
してみましょう食べ物は、ユーザー名となりFOOすでに私のデーモンのために存在するグループ名、/usr/local/bin/FOOd
。
経由で/var/run/FOOd/
デーモンプロセス/usr/local/bin/FOOd
を開始する前にディレクトリを作成する必要があります# systemctl start FOOd.service
。これは失敗します。mkdirはアクセス許可のためにディレクトリを作成できないためです。
...
Jun 03 16:18:49 PC0515546 mkdir[2469]: /bin/mkdir: cannot create directory /var/run/FOOd/: permission denied
Jun 03 16:18:49 PC0515546 systemd[1]: FOOd.service: control process exited, code=exited status=1
...
ExecStartPreでmkdirが失敗するのはなぜですか?どうすれば修正できますか?(いいえ、mkdirにsudoを使用できません...)