cron是系统主要的调度进程,可以在无需人工干预的情况下运行作业。
crontab命令允许用户提交、编辑或是删除相应的作业。每个用户都可以有一个crontab文件来保存调度信息,系统管理员通过cron.deny和cron.allow两个文件来禁止或是允许用户拥有自己的crontab文件文件存放路径
1)crontab的域
每个条目中各个域的意义和格式
第1列 分钟1~59
第2列 小时1~23 (0表示子夜)
第3列 日1~31
第4列 月1~12
第5列 星期0~6 (0表示星期天)
第6列 要运行的命令
2)crontab的格式
分<>时<>日<>月<>星期<>要运行的命令
其中<>代表空格,分成六个域,与上面的列表一一对应。在域中,可以用'-'横杠来表示一个时间范围,还可以使用逗号',',如周一到周四用1-4表示,周一和周四用1,4表示,也可以用*表示连续的时间段
crontab条目举例
1 23 * * * /home/script/run.sh #每晚23:01运行/home/script/run.sh
0,30 18-23 * * * /home/bin/dbcheck.sh #每晚18:00-23:00中间之间,每隔30分钟运行/apps/bin/dbcheck.sh
45 4 1,10,22 * * /home/bin/backup.sh #每月1、10、22号4:45运行/home/bin/backup.sh
0 23 * * 0 /home/bin/qtrend.sh #每周日23:00运行/home/bin/qtrend.sh
注:当使用crontab运行shell脚本时,要由用户给出脚本的绝对路径,设置相应的环境变量(使用绝对路径)
3)crontab命令选项
一般形式
crontab [-u user] -e -l -r
-u 用户名
-e 编辑crontab文件
-l 列出crontab中的条目
-r 删除crontab文件
4)创建crontab文件
在考虑向cron进程提交一个crontab文件之前,首先要做的一件事情就是设置环境变量EDITOR。cron进程根据它来确定使用哪个编辑器编辑crontab文件。大部分的UNIX和LINUX用户都使用v i,如果你也是这样,那么你就编辑$ HOME目录下的.profile文件,在其中加入这样一行:
EDITOR=vi; export EDITOR
然后保存并退出。
此处惯例创建一个<user>cron文件,user是用户名,例如idscron,在文件中加入如下内容:
#系统每隔15分钟向控制台输入一次当前时间
0,15,30,45 18-06 * * * /bin/echo 'date' > /dev/console
保存并退出,确保5个域用空格分隔
提交你创建crontab文件,将文件名作为cron命令的参数:
$ crontab idscron
现在该文件已经提交给cron进程,它将每隔15分钟运行一次。同时,新创建文件的副本已经放在/var/spool/cron
目录中,文件名为用户名(即ids)。
5)列出crontab文件
$ crontab -l
#系统每隔15分钟向控制台输入一次当前时间
0,15,30,45 18-06 * * * /bin/echo 'date' > /dev/console
将会显示如上的内容,我们也可以使用下面的方法对crontab文件做备份
$ crontab -l >$HOME/mycron
6)编辑及删除crontab文件
$ crontab -e
可以像使用vi编辑器一样
$ crontab -r
删除crontab文件