[vox-tech] cron - not at a different time
Peter Jay Salzman
vox-tech@lists.lugod.org
Wed, 3 Mar 2004 11:55:40 -0800
On Wed 03 Mar 04, 11:56 AM, Samuel N. Merritt <spam@andcheese.org> said:
> On Wed, Mar 03, 2004 at 11:40:24AM -0800, Peter Jay Salzman wrote:
> > On Wed 03 Mar 04, 11:28 AM, Jeff Newmiller <jdnewmil@dcn.davis.ca.us> said:
> > > On Wed, 3 Mar 2004, Ken Herron wrote:
> > >
> > > > --On Wednesday, March 03, 2004 10:11:10 -0800 Peter Jay Salzman
> > > > <p@dirac.org> wrote:
> > > >
> > > > >> > 25 4 * * * root test -e /usr/sbin/anacron || run-parts --report
> > > > >> /etc/cron.daily
> > > > >>
> > > > >> That line will only launch "run-parts" if /usr/sbin/anacron doesn't
> > > > >> exist. Does /usr/sbin/anacron exist?
> > > > >
> > > > > ken,
> > > > >
> > > > > yeah, it does exist. daily definitely runs. it just runs at a time i
> > > > > wasn't expecting.
> > > >
> > > > My point was that if /usr/sbin/anacron exists, then the crontab line
> > > > above will not run cron.daily. You say that /usr/sbin/anacron exists, so
> > > > cron.daily is not being launched as a result of the above crontab line.
> > > > That means something else is running it. Something like anacron, for
> > > > example.
> > >
> > > This list is great. This explains a longstanding puzzle (to me) of how
> > > (and to some extent why) both cron and anacron are installed on my debian
> > > box.
> > >
> > > Now that I see how it works, I am not too impressed with this kludge,
> > > though... this is a deceptively obtuse configuration duplication between
> > > these two packages.
> >
> > ok, maybe i'm slow, but i don't understand why that line will only
> > launch if /usr/sbin/anacron doesn't exist.
>
> The shell uses short-circuit evaluation on conditionals. When it sees
> A || B
> it first evaluates A. Then if A is true, the value of the whole
> conditional has to be true, so B never even gets evaluated.
>
> So, if "test -e /usr/sbin/anacron" is true because anacron is installed,
> then the shell doesn't bother with "run-parts --report /etc/cron.daily"
> because it has already figured out the value of the conditional.
>
> On the other hand, if "test -e /usr/sbin/anacron" is false, then the
> shell is looking at (false || "run-parts --report /etc/cron.daily"),
> which evaluates to whatever the right-hand side evaluates to.
aiiieeeeeee........
if i told you what going through my head, you wouldn't believe me.
ok. ken, jeff, sam. sorry. i'll shut up now.
pete
--
Make everything as simple as possible, but no simpler. -- Albert Einstein
GPG Instructions: http://www.dirac.org/linux/gpg
GPG Fingerprint: B9F1 6CF3 47C4 7CD8 D33E 70A9 A3B9 1945 67EA 951D