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