On 10/10/2020 15:38, Mike Tubby wrote:
> All,
>
> I've just discovered that my various Devuan systems aren't running cron.daily or cron.weekly tasks because /etc/crontab performs a test on anacron being present.
Not quite...
cron will NOT run if anacron IS installed AND IS executable.
If anacron is not installed, cron jobs will be skipped if the system is powered down at the time the job is due to run.
If anacron is installed, it will check for any outstanding jobs at boot and run them.
NOTE: this depends on a correct clock and filesystem timestamping ('noatime' will break it).
Check your Devuan systems for the above, if anacron is not running on a sever, this is the most probable cause.
Laptops are subject to power management settings which may also stop anacron from running.
> However /etc/crontab doesn't need anacron for cron.hourlyIt is still there as anacrontab is not configured for /etc/cron.hourly by default
If it is missed by being powered down, worst case is a 59 miniute wait and it will be run.
cat /etc/anacrontab
# /etc/anacrontab: configuration file for anacron
# See anacron(8) and anacrontab(5) for details.
SHELL=/bin/sh
PATH=/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin
HOME=/root
LOGNAME=root
# These replace cron's entries
1 5 cron.daily run-parts --report /etc/cron.daily
7 10 cron.weekly run-parts --report /etc/cron.weekly
@monthly 15 cron.monthly run-parts --report /etc/cron.monthly
24/7/365 Servers usually don't benefit from anacron
Laptops & Workstations at the mercy of power cycling Users usually do
>
> # /etc/crontab: system-wide crontab
> # Unlike any other crontab you don't have to run the `crontab'
> # command to install the new version when you edit this file
> # and files in /etc/cron.d. These files also have username fields,
> # that none of the other crontabs do.
>
> SHELL=/bin/sh
> PATH=/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin
>
> # Example of job definition:
> # .---------------- minute (0 - 59)
> # | .------------- hour (0 - 23)
> # | | .---------- day of month (1 - 31)
> # | | | .------- month (1 - 12) OR jan,feb,mar,apr ...
> # | | | | .---- day of week (0 - 6) (Sunday=0 or 7) OR sun,mon,tue,wed,thu,fri,sat
> # | | | | |
> # * * * * * user-name command to be executed
> 17 * * * * root cd / && run-parts --report /etc/cron.hourly
> 25 6 * * * root test -x /usr/sbin/anacron || ( cd / && run-parts --report /etc/cron.daily )
> 47 6 * * 7 root test -x /usr/sbin/anacron || ( cd / && run-parts --report /etc/cron.weekly )
> 52 6 1 * * root test -x /usr/sbin/anacron || ( cd / && run-parts --report /etc/cron.monthly )
>
>
> Why do we need anacron at all? Surely we can just do:
>
> 17 * * * * root cd / && run-parts --report /etc/cron.hourly
> 25 6 * * * root cd / && run-parts --report /etc/cron.daily
> 47 6 * * 7 root cd / && run-parts --report /etc/cron.weekly
> 52 6 1 * * root cd / && run-parts --report /etc/cron.monthly
>
>
> ... or am I missing something?
>
>
> Mike
>
>
>
>
> _______________________________________________
> Dng mailing list
> Dng@???
> https://mailinglists.dyne.org/cgi-bin/mailman/listinfo/dng