Why would anacron not be running?

Solution 1:

Look at the following:

zgrep anacron /var/log/cron.log.{9..1}* /var/log/cron.log | less

The last entry on one system for me is November 4, 2008.

zgrep anacron /var/log/syslog.{9..1}* /var/log/syslog | less

The entries range from December 28 through January 4 for me.

cat /etc/crontab

You should see entries similar to this for daily, weekly and monthly:

25 6    * * *   root    test -x /usr/sbin/anacron || ( cd / && run-parts --report /etc/cron.daily )

And this should show a bunch of files:

ls -l /etc/cron.{daily,weekly,monthly}

In /etc/cron.daily I have both logrotate and sysklogd.

And if you do:

ps auxww | grep [c]ron

you should see that the cron daemon is running.

If you do:

cat /etc/cron.daily/sysklogd

you should see a few lines that end in || exit 0 - check to make sure that the files exist and, for the ones with test -x that they are executable. Some of them don't for me since I'm using logrotate.

Check to see if syslogd is running:

ps -C syslogd

See if savelog exists and is executable:

ls -l $(type -p savelog)

That's all I can think of at the moment.

Solution 2:

Try running :

sudo run-parts --test /etc/cron.daily

That line will tell if your new script is among the ones "recognised". For instance it could be that the script has a wrong name, exec flag is missing or permisission issues etc.

I found out this way that the run-parts tool (used by cron) do not like a .sh suffix

Solution 3:

I have an ubunutu 8.04 vps (w/plesk) that had anacron installed, mis-configured, and not running. apt-get reinstall recreated all the relevant files.

After which, all I had to do was add an entry to the hourly crontab to fire up anacron and have it do its work.

the script I put in cron.hourly/ was just

#!bin/bash
/path/to/anacron -s