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文件内容(llist缩写)

corntab -l

-e

进入vi编辑用户crontab文件(eedit缩写)

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


每个段之间必须要有空格


1crontab 时间段的含义表

含义

取值范围

第一段

代表分钟

00-59

第二段

代表小时

00-23

第三段

代表日期

01-31

第四段

代表月份

01-12

第五段

代表星期几,0代表星期日

0-6



2)特殊符号含义如下表

特殊字符

代表意义

*(星号)

代表任何时间都,也是“每”的意思如果日、月、周都是*代表不论何月、何日的星期几都执行

,(逗号)

代表分隔时段的意思也可以和“-结合使用

例: 036*** command      3:006:00时执行

                      00 3-511-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号的凌晨445


10 1 * * 6,0/application/apache/bin/apachectl graceful

每周星期六、星期天的凌晨110


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点整


周和日尽量不要同时用,否则可能达不到想要的效果