1、crond介绍
crond是Linux下的任务调度命令,让系统定期执行指定程序。crond命令每分钟都会检查是否有要执行的工作,若有要执行的程序便会自动执行。
linux下任务调度工作主要分两类:
1)系统执行的工作:系统周期性所要执行的工作,如备份系统数据、清理缓存
2)个人执行的工作:某个用户定期要做的工作,自动备份网站程序
2、crond服务启动、关闭
service crond start //启动服务
service crond stop //关闭服务
service crond restart //重启服务
service crond reload //重新载入配置
3、在系统启动时自动启动服务
1)创建一个脚本crond.restart,内容如下:
service crond restart
2)把创建的脚本crond.restart放到/etc/rc.d/init.d目录下,这样就会每次开机自动运行脚本crond.restart。
4、crontab命令(用于设定cron服务)
crontab -u //设定某个用户的cron服务,一般root用户在执行这个命令的时候需要此参数
crontab -l //列出某个用户cron服务的详细内容
crontab -r //删除没个用户的cron服务
crontab -e //编辑某个用户的cron服务
//查看root用户的cron设置
crontab -u root -l
//删除oracle用户的cron设置
crontab -u oracle -r
//编辑cron服务
crontab -u root -e
5、创建任务调度的2种方式
1)用crontab -e命令创建
用crontab -e命令创建的任务调度存于/var/spool/cron中,其文件名与用户名一致。格式如下:
分 小时 日 月 星期 命令
0-59 0-23 1-31 1-12 0-6 command (取值范围,0表示周日一般一行对应一个任务)
每个字段代表的含义如下:
分 每个小时的第几分钟执行该任务
小时 每天的第几个小时执行该任务
日 每月的第几天执行该任务
月 每年的第几个月执行该任务
星期 每周的第几天执行该任务
命令 指定要执行的程序
"*"代表取值范围内的数字,
"/"代表"每",
"-"代表从某个数字到某个数字,
","分开几个离散的数字
//10月~12月间,每周一、周三、周五,每隔2个小时,执行一次wwwbak.sh
* */2 * 10-12 1,3,5 /home/tough/www/wwwbak.sh
//每个月1-5号的每天22点,执行一次wwwbak.sh
* 22 1-5 * * /home/tough/www/wwwbak.sh
2)编辑/etc/crontab文件(文件格式同上)
[root@toughhou ~]# more /etc/crontab
SHELL=/bin/bash
PATH=/sbin:/bin:/usr/sbin:/usr/bin
MAILTO=root
# For details see man 4 crontabs
# Example of job definition:
# .---------------- minute (0 - 59)
# | .------------- hour (0 - 23)
# | | .---------- day of month (1 - 31)
# | | | .------- month (1 - 12) OR jan,feb,mar,apr ...
# | | | | .---- day of week (0 - 6) (Sunday=0 or 7) OR sun,mon,tue,wed,thu,fri,sat
# | | | | |
# * * * * * user-name command to be executed
注:cron服务每分钟不仅要读一次/var/spool/cron内的所有文件(个人执行的工作),还需要读一次/etc/crontab(系统执行的工作)。
6、任务调度执行结果输出
//10月~12月间,每周一、周三、周五,每隔2个小时,执行一次wwwbak.sh,并把执行结果输出到var/wwwbak.log文件中
* */2 * 10-12 1,3,5 /home/tough/www/wwwbak.sh > /var/wwwbak.log 2 >&1
注:2>&1 表示执行结果及错误信息。