[systemd-devel] Enable a cron with systemd

Mike Kazantsev mk.fraggod at gmail.com
Sun Feb 5 08:22:37 PST 2012


On Sun, 5 Feb 2012 13:58:36 +0100
Steve Traylen <steve.traylen at cern.ch> wrote:

> Hi,
> 
> I was looking migrating one fedora package, fetch-crl to systemd. It
> is similar situation
> also for yum-cron.
> 
> The aim is to have a cron installed but that it only does something if
> a particular service
> is started.
> 
> Currently the methods of the init.d script does
> 
> start , touch /var/lock/subsys/fetch-crl-cron
> stop , rm -f /var/lock/subsys/fetch-crl-cron
> status , check if /var/lock/subsys/fetch-crl-cron exists
> 
> and the then the cron job starts with
> 
> if [ -f /var/lock/subsys/fetch-crl-cron ] ; then
>  do something
> else
>   exit
> fi
> 
> The reason for this is for instance you don't want to run the cron job
> with no network
> in single user mode for instance.
> 
> So I can replicate this to some extent with
> [Service]
> Type=oneshot
> RemainAfterExit=yes
> ExecStart=/bin/touch /var/lock/subsys/fetch-crl-cron
> ExecStop=/bin/rm -f /var/lock/subsys/fetch-crl-cron
> 
> but this is rubbish in particular status is not correct if that file
> is deleted for
> some reason. I could not see a way to add an ExecStatus command?
> 

Why do you need these at all? Can't you just use "systemctl status
my-network-something.service"?

For example, assuming "fetch-crl" is some binary which should be
running when cron-job works, just make a service that runs it and check
if that service is active from job.


fetch-crl.service:

[Service]
ExecStart=/usr/bin/fetch-crl


fetch-crl cronjob:

#!/bin/sh
systemctl -q is-active fetch-crl.service || exit 0
...


Another "magic" you can probably use is to make oneshot
fetch-crl-cron.service, with some .timer unit instead of cron, then use
BindTo= for the timer or Requisite= in a fetch-crl-cron.service (which
should have roughly same effect as the "systemctl is-active" line above
if you start it manually).


> But more over I am probably going about this all wrong? I guess I want
> an "empty"
> service and then have the cron job query that directly. Or there is
> some other systemd
> magic I am unaware of.
> 
> Any suggestion as to what to do here.
> 
> Steve.
> 
> 
> 
> 


-- 
Mike Kazantsev // fraggod.net


More information about the systemd-devel mailing list