这个(缩短的)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
Run Code Online (Sandbox Code Playgroud)
让FOOd为用户名,FOO为组名,我的 daemon 已经存在/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
...
Run Code Online (Sandbox Code Playgroud)
为什么 mkdir 在 ExecStartPre 失败,我该如何解决?(不,我不能对 mkdir 使用 sudo …