[systemd-devel] Emulate two cron tab entries to start/stop service unit natively?

Lennart Poettering lennart at poettering.net
Fri Aug 19 15:03:29 UTC 2016


On Mon, 01.08.16 23:59, John (da_audiophile at yahoo.com) wrote:

> Is it possible to use a systemd timer unit to start and stop a
> service unit according to set times of the day?  In my case,
> openvpn.service is a forking type if that matters. I can do this
> using cron, but am wondering if/how to do it with systemd natively.
> 
> In cron terms, one could do this like so:
> # start at 7 AM
> * 7 * * * systemctl start openvpn.service
> 
> 
> # stop at 5 PM
> * 17 * * * systemctl stop openvnp.service
> 
> The syntax of the timer with differential commands (ie start the
> service at 7 AM and stop it at 5 PM) isn't clear to me even after
> consulting `man systemd.time` and `man systemd.timer`.

You can do the exact same thing with timer units, and invoke systemctl
start/stop based on time. As timers actviate services you can also
simply activate the service drirectly via a timer. However, systemd
does not support natively to stop services by timer, currently. This
means for the "systemctl stop" part you always have to explicitly
invoke it.

An alternative is to use RuntimeMaxSec=10h in the service, which means
you'd make the service terminate after 10h. In this case the shutdown
would be scheduled monotonically however, not by calendar.

Lennart

-- 
Lennart Poettering, Red Hat


More information about the systemd-devel mailing list