crontab不是一般意义下的linux指令,它更是一个配置工具。经过这个工具,咱们能够为系统定制固定周期的任务。linux
一、crond和crontabshell
1) crond:cron服务的守护进程,用于按期调度。服务器
2) crontab:cron提供的UI,用于编辑调度计划。编辑器
二、crontab指令:工具
crontab –e:编辑已有按期调度任务,注意:该指令会启动vi编辑器进行任务编辑。spa
crontab –l:显示已有按期调度任务。日志
三、cron任务格式:server
使用crontab –e编辑按期调度任务时,实际上能够理解为编辑一个配置文件,经过这个文件定义要执行哪些按期任务,执行的周期如何。进程
编辑过程能够理解为:进入vi编辑界面,以一个工做表明一行来编辑,而后输入“:wq”保存便可。每项工做(每行)具备六个字段,各字段意义以下表所示,六个字段依次表示分钟、小时、天、月、周和要执行的shell命令。crontab
表明意义 |
分钟 |
小时 |
日期 |
月份 |
周 |
指令 |
数字范围 |
0-59 |
0-23 |
1-31 |
1-12 |
0-7 |
指令 |
四、特殊字符的使用:
cron任务中,有时须要设置较为复杂的任务处理逻辑,此时可能会用到以下特殊字符:
特殊字符 |
表明意义 |
*(星号) |
表明任什么时候候都接受。例如:30 10 * * * command中,day,month和week均为“*”,表示不管哪一天、哪一个月、周几,都在10点30分执行命令。 |
,(逗号) |
表明多个并列时间。例如:* 3,6,9,12 * * * command,表示在3点,6点,9点或12点,执行命令。 |
-(减号) |
表明连续区间。例如:* 9-17 * * * command,表示从9点到17点,每一分钟都要执行这个任务。 |
/n(斜线) |
表明每隔n个单位之间。例如:*/5 * * * * command,其中用*与/5来搭配,表示每隔5分钟执行指令;也能够写成 0-59/5 ,做用相同。 |
五、举例:
# 每周五17点整,提醒全部组员发周报:
>crontab –e #进入编辑界面
0 17 * * 5 mail all_members < weekily_report_notify
#每周一00:30统计上周的服务器使用状况,结果保存到以日期命名的文件:
>crontab –e #进入编辑界面
30 0 * * 1 /home/get_server_usage.sh> server_usage_`date +"\%Y\%m\%d"`.txt
#注意其中%的处理,须要在前面加反斜杠\进行转义。
六、注意事项:
P.S.: crontab命令中的待执行脚本最好使用绝对路径。
P.S.: “周”这一栏中0和7都表明周日。
P.S.: cron调度的最小频率为1分钟。
P.S.: 每月的最后一日没法由crontab直接支持,须要经过脚本判断。
P.S.:若是crontab运行出错,能够查看日志文件/var/log/syslog,追溯问题。