LinuxBasics.org

The community that helps people to run Linux

rss
Table of Contents

Automating tasks with cron

One of the main tasks of the systems admnistrator is to automate tasks that need to be accomplished on a regular basis.

cron

cron is a scheduling daemon for UNIX and Linux systems. It searches for files in the directories /etc/cron.hourly, /etc/cron.daily, /etc/cron.weekly, /etc/cron.monthly, as well as user files in /var/spool/cron. cron wakes every minute, examining the files and executing the appropriate commands. It also examines the files /etc/cron.allow and /etc/cron.deny, if they exist.

Directory and file locations used for cron
/etc/crontab contains the time to run various cron directories
/etc/cron.hourly contains files to be run hourly
/etc/cron.daily contains files to be run daily
/etc/cron.weekly contains files to be run weekly
/etc/cron.monthly contains files to be run monthly
/etc/cron.allow lists users allowed to use crontab
/etc/cron.deny lists users denied to use crontab

cron.allow and cron.deny may not be present all on systems.

Editing a crontab file

crontab files are edited using the crontab command. You must be root to view or edit another users crontab file.

crontab -l lists the contents of the current user’s crontab file.
crontab -l user lists the contents of the crontab file of user.

crontab -r removes the current user’s crontab file.
crontab -r user removes the crontab file for user.

crontab -e opens the current user’s crontab file in vi for editing. Be sure to look up some basic moves in vi, if you have not used it before.
crontab -e user opens the crontab file of user in vi for editing.

A typical line in a crontab file will resemble the following:

30 2 * * * find / -name core -exec rm {} \;

This will find and delete all core files each night at 2:30.

The fields in a crontab entry (Hint-copy and paste all but the last line of this into your crontab for a handy reference when you edit):

# minute (0-59),
# |      hour (0-23),
# |      |       day of the month (1-31),
# |      |       |       month of the year (1-12 or Jan-Dec),
# |      |       |       |       day of the week (0-6, 0=Sunday, or Sun-Sat).
# |      |       |       |       |       commands

  30     2       *       *       *       find / -name core -exec rm {} \;

There are several ways to define values:

, multiple values
- a range of values
* all possible values

If the first field contains 0,15,30,45 this would indicate it would run every 15 minutes. To run Monday through Wednesday, the fifth column should contain 1-3. And if the fifth column is a * it will run every day. Examples

Run the command df -h and send the output to the file /root/dfusage every Sunday Night at 2:30 am.

30 2 * * 0 df -h > /root/dfusage

Copyright (c) by the authors.
Prior to editing, authors agreed to license their contributions by the terms of the GPL.
See our licensing page for details.


Linux® is a registered trademark of Linus Torvalds.


 
  tutorials/using/automating_tasks_with_cron.txt · Last modified: 2008/07/20 21:08

LinuxBasics.org

Start Linux-Course Tutorials Linux Links Security Blog Forum E-mail List Search Online Chat

Site-Info

Help Get in Touch Making of LBo

Wiki-Control

Powered by

Linux Apache DokuWiki Mailman RUTE ht://Dig