Cronjob
Contents
Cron-Box
If you have ever tried to create a cronjob on one of the tardis machines, you may have noticed that you are lacking the necessary permissions.
There is one exception to this rule: cronbox.ee.ethz.ch here. Every user can create cronjobs on this machine just as he likes. The reason for imposing this restriction is to simplify the debugging of cronjob problems, as it will be clear that they occur on this particular machine. Furthermore it helps us as admins to clean up cronjobs when a user is archived.
Cron Hints
A job that is started via cron is running under special conditions, so you must take the following into consideration:
- The environment in your shell is not the same as the environment cron sets when executing its scripts. Especially the PATH variable may not be set the way you expect it to be set. Set an explicit path to make things work
- Whenever your cronjob outputs anything, cron will send you this material by mail. The idea is that 'happy programs don't talk'. If they do talk this means there is trouble and the owner should know about it.
- Since there are quite a number of things to observe when setting up a cronjob it is best to refrain from trying to press all this into a single line of code in the crontab. Rather write a little script that observes the rules above and add this script to the crontab.
Consider using remote triggers via SSH and SSH public keys somewhere else where more software is installed if needed. Set appropriately as well a connection timeout parameter for the SSH client (-o ConnectTimeout=5).
Sample Cron-Script
mkdir -p ~/bin cat <<SCRIPT >~/bin/cronscript.sh #!/bin/sh uptime SCRIPT chmod 755 ~/bin/cronscript.sh
The commands above, when entered into you shell will create cronscript.sh now run crontab -e to add it to your crontab. If you want the script to run every hour at 15 minutes past the hour it would look like this:
15 * * * * $HOME/bin/cronscript.sh
With crontab -l you can check if the cronjob has been properly accepted.
And ...
Learn more about cron in cron(8), crontab(1) and crontab(5).