Job Schedulers – UNIX
We might have worked on various Job Scheduling Frameworks, one of the famous one that comes to our mind is Quartz. Yes quartz is a cool frameworks which has advanced error handling, job scheduling and various other great feature. Recently while trying to create a scheduling task for a task in UNIX I decided to check out the inbuilt job scheduling component – crontab, instead of setting up a java application and scheduling it using quartz. There is also a command like a timer at which a script can be run – at , but this feature doesn’t enable scheduling and is good for a run once command.
In the UNIX / Linux environment, it is possible to asynchronously execute tasks at any desired time of the day.
It spawn’s a new shell at the scheduled time and runs the job. cron starts itself at boot time and never stops until the machine is shutdown. This is maintained by the cron clock daemon. cron is slaved to the system clock and awakens at one minute intervals to start scheduled jobs / jobs.
cron reads text files called cron tables. cron table maintenance is accomplished with the crontab command. A cron table file is ordinary ASCII text and consists of one or more lines specifying what is to be executed and when.
crontab -e and crontab -l are most often used, the former to create or edit a cron table and the latter to display it. On most systems, crontab -e will automatically start the vi text editor and if a cron table already exists, load it into vi. Upon saving and exiting from vi, the new or revised file will be submitted to cron, overwriting the existing cron table.
min hour day mon dow command #comment
min 0-59 hour 0-23 day 1-31 mon 1-12 dow 0-6 (Sunday = 0)
Values are cumulative, cron understands an asterisk (*) to mean all legal values for the field where it is used, and also understands numeric ranges.
crontab -l 30 * * * * /export/home/user/example/DeleteOldTmpFiles.sh
This means this sh file will run every 30th minute of a hour every day, every month of the year.
Summary and few pointers have been taken from the above site and the above site is a very good tutorial site.
- If vi doesn’t start check if the .profile file of the user contains the following
export VISUAL=vi export EDITOR=v
- If the cron job doesn’t start check if your username is in the cron deny file – check this link for more details -http://www.tech-faq.com/create-cron-job.shtml
- If everything seems right and still your cron job doesn’t run check if your script file has executable rights
ls -altr filename
if it is not there you will have to add this in your .profile of your user or create a new .profile file
chmod u+x /export/home/user/example/DeleteOldTmpFiles.sh