[systemd-devel] Temporarily stopping a service while oneshot is running
Lennart Poettering
lennart at poettering.net
Thu Mar 30 14:12:48 UTC 2017
On Tue, 21.03.17 20:31, Kai Krakow (hurikhan77 at gmail.com) wrote:
> Am Tue, 21 Mar 2017 07:47:59 -0500
> schrieb Ian Pilcher <arequipeno at gmail.com>:
>
> > I have a oneshot service (run from a timer) that updates the TLS
> > certificates in my mod_nss database. Because NSS doesn't support
> > concurrent access to the database, I need to temporarily shut down
> > Apache while the certificate update service is running.
> >
> > Currently, I'm using the following entries in my .service file to
> > accomplish this:
> >
> > [Unit]
> > Description=Update TLS certificates in mod_nss database
> > # Restart Apache, even if this service fails for some reason
> > OnFailure=httpd.service
> >
> > [Service]
> > Type=oneshot
> > # Shut down Apache to avoid concurrent access to the mod_nss
> > database ExecStartPre=/usr/bin/systemctl stop httpd.service
> > ExecStart=/usr/local/bin/update-nss-certs
> > ExecStartPost=/usr/bin/systemctl start httpd.service
> >
> > Is this the best way to do this? (I can't escape the feeling that
> > there ought to be a more idiomatic way of accomplishing this.)
>
> Would "Conflicts=" help here?
No it would not.
Conflicts= would mean the specified service is stopped when the
oneshot service is started, but it will never be started again.
Lennart
--
Lennart Poettering, Red Hat
More information about the systemd-devel
mailing list