Skip site navigation (1)Skip section navigation (2)
Date:      Sat, 26 Nov 2011 14:00:30 -0500
From:      Jason Hellenthal <jhell@DataIX.net>
To:        Michael Ross <gmx@ross.cx>
Cc:        Christian Kastner <debian@kvr.at>, freebsd-hackers@freebsd.org
Subject:   Re: cron(8) mis-feature with @reboot long after system startup
Message-ID:  <20111126190030.GA58253@DataIX.net>
In-Reply-To: <op.v5jgu0rmg7njmm@michael-think>
References:  <20111125070241.GA7915@DataIX.net> <4ED00A68.4040606@kvr.at> <20111126051121.GA4628@DataIX.net> <op.v5jgu0rmg7njmm@michael-think>

next in thread | previous in thread | raw e-mail | index | archive | help


On Sat, Nov 26, 2011 at 06:43:38AM +0100, Michael Ross wrote:
> Am 26.11.2011, 06:11 Uhr, schrieb Jason Hellenthal <jhell@dataix.net>:
> 
> >
> >
> > On Fri, Nov 25, 2011 at 10:36:40PM +0100, Christian Kastner wrote:
> >> Hi,
> >>
> >> On 2011-11-25 08:02, Jason Hellenthal wrote:
> >> > So with that said... is there a way we could actually make this run  
> >> @reboot only ?
> >>
> >> Debian's cron[0] and Fedora's cronie[1] have solved this by touching a
> >> file on first startup and running @reboot only when this file does not
> >> yet exist.
> >>
> >> Note that while [0] may point to other patches that might be of interest
> >> to FreeBSD, they are still WIP (as evident from the linked patch) as we
> >> are still in the process of quiltifying our current code base.
> >>
> >
> > While this sounds like a perfectly sane way to handle the problem at  
> > hand this also introduces a need to write some cleanup code to take care  
> > of the file semantics. I think comparing daemon start times to the time  
> > a system was booted or similiar would alleviate the need for all that.  
> > Maybe a flag for @reboot "-s <seconds>" seconds after boottime to allow  
> > running @reboot jobs. And set the default to 3600 seconds. At least this  
> > would allow adjustment for those startup processes that may take some  
> > considerable time before multiuser mode is entered.
> >
> > Just some thought.
> >
> > I really don't think we need to go the route of using files to store  
> > information when there is enough information available already via  
> > syscall's.
> 
> If system startup were to be unusually delayed (dhcp or nfs trouble eg),  
> $time_period might have passed when cron starts, so there would have to be  
> some notifying mechanism for @reboot jobs not being run, and operator  
> action would be required.
> 

I agree but also disagree. 1 hour or 3600 seconds is plenty of time to wait for the "@reboot" extension scripts to fire.

> One could "cron restart" within $time_period and run @reboot twice.
> 
> I don't like this idea.
> 
> In my bikeshed, @reboot should be called @cronstart, but it shouldn't  
> because of uniformity across OSs.
> The cron manpage should reflect the actual behaviour (already patched in  
> svn),
> and all "definitely only on boot"-scripts should go in local/etc/rc.d.
> 

This has nothing to do with rc.d. This is a cron(8) problem only.



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