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.
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.
mkdir -p ~/bin cat <<SCRIPT >~/bin/cronscript.sh #!/bin/sh # shell scripts should be written in /bin/sh # see also http://www.faqs.org/faqs/unix-faq/shell/csh-whynot # # uncomment the following line to get a running output of what # the script does #set -x # # set an absolut path to be sure that the script works everywhere PATH=/usr/bin:/bin:/usr/sbin:/sbin:/usr/sepp/bin export PATH # show me who is working on tardis-a15. if no one is working there be quiet. rwho | grep tardis-a15 # end of script 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.
Learn more about cron with man cron, man 1 crontab and man 5 crontab.