How do I run a cron job on a Mac?

How can I make my Mac (running the most recent OS) do a task automatically once a day? For example, I'd like to have it automatically download a copy of this open source algebraic geometry textbook once a day. I have a feeling that some combination of wget and cron should work, but, after googling and reading the cron documentation, I just couldn't get it to work right.


I think in OS X you should use launchctl for "cron jobs".
But otherwise your task should be easy to do with a cronjob
sudo crontab -e
55 23 * * * wget http://www.math.columbia.edu/algebraic_geometry/stacks-git/book.pdf

This should run everyday at 23:55

Update

You should specify the output location of WGET with -O /path/to/file


The cron daemon can be activated by a simple:

sudo touch /private/etc/crontab

Then it's advisable to enter the full path of your /usr/local/bin/wget (or wherever it lives). Cron does not know of your user's $PATH. Hope it helps.


You may use Cronnix which is a free graphical interface for cron :

http://www.macupdate.com/app/mac/7486/cronnix/


If you're finding the command line syntax (etc) too confusing/arcane, you might lok at GUI tool for viewing/editing/creating these jobs.

In the past I've used Lingon, which has been made available on the Mac App Store now too. I don't need to use it very often, but it's very useful when I do!


A more elegant solution (than cron) is to use iCal notifications + Applescript.

First, launch AppleScript Editor (located under /Application/Utilities) and paste the following code:

set the destination_file to ("~/Downloads/book.pdf")

set the contentLink to "http://www.math.columbia.edu/algebraic_geometry/stacks-git/book.pdf"

tell application "URL Access Scripting"
    download contentLink to destination_file replacing yes
end tell

Save the script and quit applescript editor.

Open your iCal and create a new event for today, setting the time you want, select "repeat: Every day" and as an alarm "Run script" and select your applescript.

If you want to notified for every download, you may add another alarm with a "Message with Sound", "on date".