crond是linux系统中用来定期执行命令或者指定程序任务的一种服务或者软件。
crond默认情况下(每分钟),会检查系统中是否有需要执行的定时任务,如果有,就会根据事先定义好的规则来执行这个定时任务。就好比生活中的闹钟一样。但是注意的是crond对于秒级的任务(以秒为单位定时任务)是无能为力的,需要写守护进程(shell循环)脚本或者使用Quartz实现秒级任务。
在Linux中,周期执行的任务一般由cron这个守护进程来处理[ps -ef|grep cron]。cron的配置文件称为“crontab”,是“cron table”的简写。cron读取一个或多个配置文件,这些配置文件中包含了命令行及其调用时间。
service crond start //启动服务
service crond stop //关闭服务
service crond restart //重启服务
service crond reload //重新载入配置
service crond status //查看服务状态
二、linux定时任务分类:
系统自身的定期执行的任务:如轮询系统日志、备份系统数据、清理系统缓存等,这些定时任务无需人为干预.系统任务调度的配置文件:/etc/crontab。
/etc/crontab配置基本格式 :
SHELL=/bin/bash #指定了系统要使用哪个shell
PATH=/sbin:/bin:/usr/sbin:/usr/bin #指定了系统执行 命令的路径,
MAILTO=root #指定了crond的任务执行信息将通过电子邮件发送给root用户,如果MAILTO变量的值为空,则表示不发送任务 执行信息给用户,
HOME=/ #HOME变量指定了在执行命令或者脚本时使用的主目录
基本格式 :
* * * * * command
分 时 日 月 周 命令
第1列表示分钟0~59 每分钟用*
第2列表示小时0~23 每小时用*
第3列表示日期1~31 每天用*
第4列表示月份1~12 每月用*
第5列标识号星期0~6(0表示星期天)
第6列要运行的命令
/n :每隔n单位时间(分、时、月、周)
17-19 :表示一段范围
, :表示不同时间点
书写定时任务时要领:
1、增加定时任务调试频率。个人开发环境->办公室测试环境->IDC机房测试->IDC正式上线
2、通过脚本日志输出调试任务。
3、注意环境变量导致的定时任务故障(JAVA)。
4、通过定时任务服务日志调试任务。(var/log/cron)
5、系统任务里命令要用绝对路径。
6、脚本权限问题要加/bin/bash.
7、时间变量问题用\%转义,最好用脚本。
8、定时任务加注释
9、使用脚本程序代替命令行定时任务。
10、避免不必要的程序命令输出。
例如:
30 21 * * * /usr/local/etc/rc.d/lighttpd restart
上面的例子表示每晚的21:30重启apache。
2、用户执行的任务:某个系统管理员或用户定期要执行的任务。用户定期要执行的工作,如用户数据备份、定时邮件提醒等。用户可以使用 crontab 工具来定制自己的计划任务。用户任务调度的配置文件: /var/spool/cron/文件名(其文件名与用户名一致,一般一个用户最多只有一个crontab文件)。
三、crontab命令详解
命令功能:通过crontab 命令,我们可以在固定的间隔时间执行指定的系统指令或 shell script脚本。时间间隔的单位可以是分钟、小时、日、月、周及以上的任意组合。这个命令非常设合周期性的日志分析或数据备份等工作。
命令格式: crontab [-u user] [file] crontab [-u user] [ -e | -l | -r ]
命令参数:
-u user:用来设定某个用户的crontab服务,例如,“-u Tom”表示设定Tom用户的crontab服务,此参数一般有root用户来运行。
-e:编辑某个用户的crontab文件内容。如果不指定用户,则表示编辑当前用户的crontab文件。
-l:显示某个用户的crontab文件内容,如果不指定用户,则表示显示当前用户的crontab文件内容。
-r:从/var/spool/cron目录中删除某个用户的crontab文件,如果不指定用户,则默认删除当前用户的crontab文件。
-i:在删除用户的crontab文件时给确认提示。
原文地址:http://blog.51cto.com/12674559/2103041