Crontab是Linux运维最基础的命令之一,该命令的作用就是定期执行计划性工作,它类似于Windows的计划任务。CentOS自带这个服务而且是自动启动的,它的命令行工具crontab命令却不是Linux的内置命令。通过type命令就可以看出来。
1
2
|
yum
install
crontab
安装
service crond start
/stop/restart/reload
|
Linux中调度任务分为两种:系统调度任务、用户调度任务
系统调度任务:顾名思义是系统发起的也就是内置的完成系统操作,配置文件为/etc/crontab
用户调度任务:用户发起的,完成用户所需要的工作,配置文件自己生成,/var/spool/cron
所以对于系统来说它既要执行系统级的任务也好执行用户级别的任务。
我们用系统级的配置文件来说下格式,这个在用户级别是一样的
SHELL:系统使用的SHELL是什么
PATH:执行命令时寻找命令的路径
MAIL TO:如果出现错误或者输出那么发送电子邮件给谁
HOME:执行命令或脚本使用的主目录
文件里已经表明了具体格式,这里在说一下它
minute | hour | day | month | week | commd |
0-59表示60分钟 | 0-23表示24小时 | 1-31表示天 | 1-12表示12个月 | 0-6 表示周一到周日 |
要执行的命令 |
* 表示任何时间,比如如果再hour段写*,表示其他条件满足,不管当前实际hour时间是多少,都执行
, 表示时间间隔,比如在minute段写 0,15,30,45 表示每隔15分钟运行一次
- 表示一个范围,比如在hour段,2-4,表示2点3点4点
/ 表示一个频率,比如在hour段 0-23/2 表示每2小时执行一次,相当于0,2,4,6,8,10,12,14...就是一种简化写法
一般用户设定计划任务就使用crontab命令
crontab file [-u] [-e] [-l | -r]
file 指定一个加载任务列表的文件
-e 编辑当前用户的任务文件,可以指定-u来设定修改谁的
-l 显示当前用户的任务文件,可以指定-u来设定显示谁的
-r 从/var/spool/cron目录中删除某个用户的任务文件
举例:
每分钟执行一次PING操作
1
|
* * * * *
ping
www.baidu.com
|
每5分执行一次PING操作
1
|
5 * * * *
ping
www.baidu.com
|
每天上午9点到12点,每10分钟执行一次
1
|
10 9-12 * * *
ping
www.baidu.com
|
每周六和周日凌晨2点执行一次
1
|
* 2 * * 6,0
ping
www.baidu.com
|
每个三天执行一次
1
|
* * *
/3
* *
ping
www.baidu.com
|
每天凌晨到6点,每隔一小时执行一次
1
|
* 0-6
/1
* * *
ping
www.baidu.com
|
我们使用crontab -e命令给当前用户建立一个执行计划
看一看执行情况
1
|
tail
/var/log/cron
|
用户创建的计划文件在/var/spool/cron下面
所以你可以直接编辑这个文件,也可以crontab -e也是一样的,如果都是编辑当前用户的计划任务。
本文转自linuxjavachen 51CTO博客,原文链接:http://blog.51cto.com/littledevil/1865126,如需转载请自行联系原作者