crontab命令的功能是在一定的时间间隔调度一些命令的执行

crontab命令有三种形式的命令行结构: 

crontab [-u user] [file] 

crontab [-u user] [-e|-l|-r]



crontab -l -u [-e|-l|-r] 第一个命令行中,file是命令文件的名字。如果在命令行中指定了这个文件,那么执行crontab命令,则将这个文件拷贝到crontabs目录下;如果在命令行中没有制定这个文件,crontab命令将接受标准输入(键盘)上键入的命令,并将他们也存放在crontab目录下。 

命令行中-r选项的作用是从/usr/spool/cron/crontabs目录下删除用户定义的文件crontab; 

命令行中-l选项的作用是显示用户crontab文件的内容。 

使用命令crontab -u user -e命令编辑用户user的cron(c)作业。用户通过编辑文件来增加或修改任何作业请求。 

执行命令crontab -u user -r即可删除当前用户的所有的cron作业。 

作业与它们预定的时间储存在文件/usr/spool/cron/crontabs/username里。username使用户名,在相应的文件中存放着该用户所要运行的命令。命令执行的结果,无论是标准输出还是错误输出,都将以邮件形式发给用户。文件里的每一个请求必须包含以spaces和tabs分割的六个域。前五个字段可以取整数值,指定何时开始工作,第六个域是字符串,称为命令字段,其中包括了crontab调度执行的命令。 

第一道第五个字段的整数取值范围及意义是: 

0~59 表示分 

1~23 表示小时 

1~31 表示日 

1~12 表示月份 

0~6 表示星期(其中0表示星期日) 

/usr/lib/cron/cron.allow表示谁能使用crontab命令。如果它是一个空文件表明没有一个用户能安排作业。如果这个文件不存在,而有另外一个文件/usr/lib/cron/cron.deny,则只有不包括在这个文件中的用户才可以使用crontab命令。如果它是一个空文件表明任何用户都可安排作业。两个文件同时存在时cron.allow优先,如果都不存在,只有超级用户可以安排作业。

Crontab命令使用的文件具体位置: /Var/Spool/Cron/Crontabs 目录下,每个用户都有其对应的名字,比如,root用户的文件为root.

00 02 * * 1-5 /usr/sysadm/dailybackup.sh > /uf/logs/dailybackup.log 2>&1
00 03 * * 1-5 find /u01/app/oracle/admin/prod/archive -name "*.ARC" -mtime +4 -exec rm {} \;



【解释】

第一行的意思是,每个周的周一到周五的凌晨2点,系统会自动执行一个脚本程序dailybackup.sh,并且把执行信息和错误提示信息输出到dailybackup.log这个文件中,是追加形式。

第二行的意思是,在目录/u01/app/oracle/admin/prod/archive中,查找文件名为*.ARC的文件,并删除4天前的文件。

【dailybackup.sh】 

#!/bin/sh
####################################################################
set_return()
{
x=$?
if [ $x -ne 0 ]; then
echo "EXIT CODE: $x"
rval=1
fi
}
# Delete at first all unnecessary files:
# /uf/SYS/RES/jcs/reorganize.sh

#
su - oracle -c "/u01/app/oracle/product/8.0.6/bin/dbshut"
su - oracle -c "/u01/app/oracle/product/8.0.6/bin/lsnrctl stop"
set_return

/usr/sysadm/backup.sh
# BackupDate=`date '+%d.%m.%Y'`         //可以生成以年月日格式的文件名,如20040217
# cp /uf/logs/rootsich.log /uf/logs/rootsich.log.$BackupDate
# compress /uf/logs/rootsich.log.$assichdat

# Activation of the Unix copy of Oracle database prod to train
# sh /uf/util/autocopy.sh

su - oracle -c "/u01/app/oracle/product/8.0.6/bin/dbstart"
su - oracle -c "/u01/app/oracle/product/8.0.6/bin/lsnrctl start"
set_return




【解释】

这个脚本主要负责,先关闭数据库,然后运行脚本backup.sh进行备份,备份完毕后,启动数据库。

【backup.sh】

#!/bin/sh
####################################################################
# backup.sh
#
####################################################################
fbackup -0 -v -n -i / -f /dev/rmt/0m >/var/adm/fbackupfiles/backup.log 2>&1
exit_code=$?
exit $exit_code



【解释】

这个脚本就是运行fbackup,进行对根目录/下所有文件进行备份。

Crontab是UNIX系统下的定时任务触发器,其使用者的权限记载在下列两个文件中:
/usr/var/adm/cron/cron.deny:该文件中所列的用户不允许使用Crontab命令;
/usr/var/adm/cron/cron.allow:该文件中所列的用户允许使用Crontab命令;
Crontab命令的格式为:crontab –l|-v|-r|-e [username],其参数含义如表一:
     

参数名称 
含义 

-l 
显示用户的Crontab文件的内容 

-v 
显示用户的Crontab文件的内容及其提交的时间,只适用于Compaq系列 

-r 
从Crontab目录中删除用户的Crontab文件 

-e 
编辑用户的Crontab文件 



用户所建立的Crontab文件存于/var/spool/cron/crontabs中,其文件名与用户名一致。
它的格式共分为六段,前五段为时间设定段,第六段为所要执行的命令段,
格式如下:* * * * * 

其时间段的含义如表二:
段 
含义 
取值范围 

第一段 
代表分钟 
0—59 

第二段 
代表小时 
0—23 

第三段 
代表日期 
1—31 

第四段 
代表月份 
1—12 

第五段 
代表星期几,0代表星期日 
0—6 


例:如果用户的Crontab文件的内容是:29 19 * * * echo its dinner time,则系统每天的19:29显示‘its dinner time’。