Skip site navigation (1)Skip section navigation (2)
Date:      Mon, 17 Sep 2007 10:46:23 -0500
From:      David Kelly <dkelly@hiwaay.net>
To:        Steve Franks <stevefranks@ieee.org>
Cc:        User Questions <freebsd-questions@freebsd.org>
Subject:   Re: cron jobs not done during sleep
Message-ID:  <20070917154623.GC45779@Grumpy.DynDNS.org>
In-Reply-To: <539c60b90709170822yedd52e0mcc9c8a5ff8ed0932@mail.gmail.com>
References:  <539c60b90709170822yedd52e0mcc9c8a5ff8ed0932@mail.gmail.com>

next in thread | previous in thread | raw e-mail | index | archive | help
On Mon, Sep 17, 2007 at 08:22:45AM -0700, Steve Franks wrote:
> Correct me if I'm wrong, but cron doesn't keep track of the last time
> something was done, does it?  Which is to say if my system is crashed,
> was asleep, or powered off when a job is supposed to happen, it will
> not happen the next time the system is successfully operational, will
> it?  It's not obvious to me for sure either way from any sources I've
> read (man crontab, google), and unix tends towards k.i.s.s. (which is
> why we like it)
> 
> ...I understand why that would be important behavior if something
> would cause problems executed other than 9am on Mondays...
> 
> Is there a tool or setting to implement this functionality?  I want
> something to happen weekly, I don't care when.  Assume I am off the
> commercial power grid and I'm not going to leave my system powered on
> just to make sure my backups get run.  I use it when I need it, then I
> turn it off.  More people should.  Electricity is not free from a
> economic, social, or environmental perspective, and promises to be
> less so with time.

Is easy enough to implement yourself. Write a script containing your
weekly commands. Launch it every hour or so.

First thing in your script look for a flag file indicating last time
your script was run. If it does not exist, create it (suggest using
touch), and run the rest of your script.

If the flag file does exist compare dates. If older than some specified
interval then touch(1) it and run the rest of your script. Might get
fancy and code the date test in the crontab command field.

/var/run might be a good place to put your flag file.

Notice the test(1) utility can compare new/older file dates and that
touch(1) can stamp a future date on the file.

You can compile a future date with "date -v +1W". Play with the
formatting options to make the output compatible with input to touch.

-- 
David Kelly N4HHE, dkelly@HiWAAY.net
========================================================================
Whom computers would destroy, they must first drive mad.



Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?20070917154623.GC45779>