crontab
1 指令语法
crontab [-u user] file
crontab [-u user] [-l | -r | -e |-i]
usage: crontab [-u user] file
crontab [-u user] [ -e | -l | -r ]
(default operation is replace,per 1003.2)
-e (edit user's crontab)
-l (list user's crontab)
-r (delete user's crontab)
-i (prompt before deletinguser's crontab)
-s (selinux context)
范例:
[root@yubing ~]# crontab -l
*/5 * * * * /usr/sbin/ntpdatetime.windows.com>/dev/null 2>&1
2 指令说明
通过crontab我们可以在固定的间隔时间执行指定的系统指令或shell script脚本。时间间隔的单位可以是分钟、小时、日、月、周及以上的任意组合(注意:日和周不要组合)。crond服务通过crontab命令可以很容易的实现周期性的日志分析或数据备份等运维场景工作。
3 使用者权限文件
文件 | 说明 |
/etc/cron.deny | 该文件中所列用户不允许使用crontab命令 |
/etc/cron.allow | 该文件中所列用户允许使用crontab命令 |
/var/spool/cron/ | 所有用户crontab文件存放的目录,以用户名命名 |
4 指令选项说明含义集
参数名称 | 含义 | 指定示例 |
-l(字母l) | 显示用户crontab文件内容(l为list缩写) | corntab -l |
-e | 进入vi编辑用户crontab文件(e为edit缩写) | crontab -e |
-i | 删除用户crontab文件前确认提示 | crontab -ri |
-r | 从crontab目录中删除用户crontab文件 | corntab -r |
-u user | 指定使用的用户 | crontab -u user -l |
5 指令的使用格式
默认情况下,用户所建立的crontab文件存于/var/spool/cron中,其crontab对应的文件名与用户名一致
系统定时任务的格式共分为七段,前五段为时间设定段,第六段为以哪个用户执行crontab(默认是当前用户)。第七段为所要执行的命令段
格式如下:
01 * * * * rootrun-parts /etc/cron.hourly 每小时
02 4 * * * rootrun-parts /etc/cron.daily 每天
22 4 * * 0 rootrun-parts /etc/cron.weekly 每周
42 4 1 * * rootrun-parts /etc/cron.monthly每个月1号
每个段之间必须要有空格
(1)crontab 时间段的含义表
段 | 含义 | 取值范围 |
第一段 | 代表分钟 | 00-59 |
第二段 | 代表小时 | 00-23 |
第三段 | 代表日期 | 01-31 |
第四段 | 代表月份 | 01-12 |
第五段 | 代表星期几,0代表星期日 | 0-6 |
(2)特殊符号含义如下表
特殊字符 | 代表意义 |
*(星号) | 代表任何时间都,也是“每”的意思如果日、月、周都是*代表不论何月、何日的星期几都执行 |
,(逗号) | 代表分隔时段的意思也可以和“-”结合使用 例: 03,6*** command 3:00与6:00时执行 00 3-5,11-13 * * * command |
-(减号) | 代表一段时间范围内例:8点到12点之间的每小时的20分都进行一次工作: 20 8-12*** command |
/n()斜线 | n代表数字,每隔n单位间隔的意思 例如每五分钟进行一次: */5**** command |
6 crontab依赖的服务
服务必须开启
chkconfig --list | grep crond
[root@yubingcron]# chkconfig --list | grep crond
crond 0:off 1:off 2:on 3:on 4:on 5:on 6:off
/etc/init.d/crond status
/etc/init.d/crond restart
7 实例说明
*/1 * * * */bin/sh /scripts/data.sh
每分钟
30 3,12 * * */bin/sh /scripts/oldboy.sh
每天的凌晨3点半和中午12点半
30 */6 * * */bin/sh /scripts/oldboy.sh
每隔6个小时的半点时刻
30 8-18/2 * * */bin/sh /scripts/oldboy.sh
每天的早上8点到18点每隔2小时的半点时刻
30 21 * * */application/apache/bin/apachectl graceful
每天的21点半
45 4 1,10,22 * */application/apache/bin/apachectl graceful
每个月的1号、10号、22号的凌晨4点45分
10 1 * * 6,0/application/apache/bin/apachectl graceful
每周星期六、星期天的凌晨1点10分
0,30 18-23 * * */application/apache/bin/apachectl graceful
每天的18点到23点每隔半小时
00 */1 * * */application/apache/bin/apachectl graceful
每隔一个小时
* 23-7/1 * * */application/apache/bin/apachectl graceful
每天的23点到凌晨7点的每分钟
0 11 * 4 1-3/application/apache/bin/apachectl graceful
每年4月的星期1到星期3的上午11点整
周和日尽量不要同时用,否则可能达不到想要的效果