I have installed the pimd
service by means of apt
. This comes with an upstream systemd
unit file (/lib/systemd/system/pimd.service
).
I want the service to be restarted when for some reason it gets killed, hence I wish to add the line Restart = always
in the unit file.
However, I don’t want to modify the upstream unit file.
Is there any workaround for this?
You have two options:
Copy the unit file from
/lib/systemd/system/
to/etc/systemd/system/
.And then make your modifications in
/etc/systemd/system/pimd.service
to completely override the unit file(s) supplied by the package maintainer.The command
systemctl edit --full <service-name>
automates this for you.You can alter or add specific configuration settings for a unit, without having to modify unit files by creating
.conf
files in a drop-in directory/etc/systemd/system/<unit-name>.<unit-type>.d/
i.e. create a
/etc/systemd/system/pimd.service.d/restart.conf
The command
systemctl edit <service-name>
performs these steps for you.See
man systemd.unit
The RHEL documentation recommends two ways:
/etc/systemd/system/[name-goes-here].service.d/config_name.conf
In this case the file would need to contain something like this:
This is what
systemctl edit [name-goes-here]
does, it creates that directory andoverride.conf
within it.I would try option one but they are both viable options. Either way remember to run
systemctl daemon-reload
after making the changes.RHEL documentation on Creating and Modifying systemd Unit Files
Consider using a script to read the upstream configuration, modify it, and spit it out to drop-in file.
For example, I use Chef and here's a piece of ruby (library) that parses marathon systemd unit file to get original ExecStart from it
Then in the recipe, I create the drop-in file to append an option to ExecStart