如何根据文件存在改变systemd服务中的启动参数?

时间:2017-06-09 08:17:46

标签: systemd

我正在尝试为OpenLDAP编写服务文件。到目前为止我得到的是:

[Unit]
Description=OpenLDAP server daemon
After=network.target

[Service]
Type=forking
PIDFile=/var/run/slapd/slapd.pid
ExecStartPre=-/bin/mkdir /var/run/slapd
ExecStartPre=/bin/chown openldap:openldap /var/run/slapd
ExecStart=/srv/openldap-latest/lib/slapd -h "ldap:/// ldaps:/// ldapi:///" -u openldap -g openldap -F /etc/ldap/slapd.d

[Install]
WantedBy=multi-user.target

问题是“-F /etc/ldap/slapd.d”位。首次设置OpenLDAP时,该目录不存在,因此您必须指定“-f /etc/ldap/slapd.conf”。但是,我无法看到如何使用systemd执行此操作。

一个选项可能是定义两个不同的单位 - 一个在slapd.d存在时启动,一个在slapd.d不存在时启动 - 但是服务仍然需要被调用相同的东西,否则管理员会变得非常困惑,所以我不认为这个想法有用。

我该如何解决这个问题?

1 个答案:

答案 0 :(得分:0)

添加如何:

 ExecStartPre=-/bin/mkdir /etc/ldap/slapd.d