1.crontab命令

crond 是linux下用来周期性的执行某种任务或等待处理某些事件的一个守护进程,与windows下的计划任务类似,当安装完成操作系统后,默认会安装此服务 工具,并且会自动启动crond进程,crond进程每分钟会定期检查是否有要执行的任务,如果有要执行的任务,则自动执行该任务。



1.1 crontab的调度方式

Linux下的任务调度分为两类,系统任务调度和用户任务调度


系统任务调度:系统周期性所要执行的工作,比如写缓存数据到硬盘、日志清理等。在/etc目录下有一个crontab文件,这个就是系统任务调度的配置文件。/etc/crontab,cron.daily/,cron.hourly/  cron.monthly/。

一般把计划任务写在这个文件里面就可以了。/etc/crontab

如果想一小时执行一次的脚本放在 cron.hourly/ 目录里面即可一般会被软连接到这个目录下,或者拷贝进来。。


用户任务调度:用户定期要执行的工作,比如用户数据备份、定时邮件提醒等。用户可以使用 crontab 工具来定制自己的计划任务。所有用户定义的crontab 文件都被保存在 /var/spool/cron目录中。其文件名与用户名一致。

如果用户 wang 想创建一个用户的计划任务,可以创建一个 wang 的文件,以crontab的格式写任务计划。例如:echo '00 00 * * * /bin/sh /usr/local/webserver/nginx/script/cut_nginx_log.sh' >> /var/spool/cron/root



1.2 crontab的文件格式

crontab文件的格式:

minute    hour    day    month    weekday    username     command


详解:

minute:分,值为0-59

hour:小时,值为1-23

day:天,值为1-31

month:月,值为1-12

weekday:星期,值为0-6(0代表星期天,1代表星期一,以此类推)

username:要执行程序的用户,一般设置为root

command:要执行的程序路径(设置为绝对路径)



2.crontab命令的使用方法

格式:

crontab  [选项]


选项:

e:编辑一个新的计划任务

l:显示计划任务

r:删除计划任务


实例:

# crontab -e //创建计划任务

00 * * * *  root /usr/bin/date


# crontab -l //查看计划任务

00 * * * *  root /usr/bin/date


# crontab -r //删除计划任务,并查看

# crontab -l

no crontab for root



3.crontab实例

1. 每两小时执行一次date命令

* */2 * * * root /usr/bin/date


2.周三和周五8点执行date命令

* 8 * * 3,5 root /usr/bin/date


3.6点到9点执行date命令

* 6-9 * * * root /usr/bin/date


特殊符号

代表意义

*星号

任何时刻都接受的意思,例如0 3 * * * 不管什么日期月份周只要到3点就执行工作

,逗号

分隔的意思,例如0 3,6 * * * 3点和6点都执行工作

-减号

代表时间范围,例如0 1-3 * * * 123点都执行工作

/n斜线

n为数字,表示每隔几个单位,例如 */5 * * * *每隔5分钟执行工作一次