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 cronjobsudo 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".