我是靠谱客的博主 怕孤独大炮,最近开发中收集的这篇文章主要介绍Linux指令之 Crontab定时任务调度 11. 定义和基本语法2.Crontab的使用3. 栗子堆,觉得挺不错的,现在分享给大家,希望可以做个参考。
概述
1. 定义和基本语法
- 定时任务调度: 指的是系统定期的在某个时间执行特定的命令或程序.
- 任务调度的分类:
1. 系统工作: 有些重要的工作必须周而复始的执行, 比如病毒扫描;
2. 个别用户工作: 个别用户可能希望执行某些程序, 比如对mysql数据库的备份;
基本语法:
crontab [-u user] file
crontab [ -u user ] [ -i ] { -e | -l | -r }
常用选项:
crontab选项 | 功能说明 |
---|---|
-u user | 用户设定某个用户的Crontab服务 |
-e | 编辑某个用户的crontab文件内容,如不指定用户则表示当前用户 |
-l | 列出任务调度-----查询某个用户的crontab文件内容,如不指定用户则表示当前用户; |
-r | 终止任务调度----从/var/spool/cron目录中删除某个用户的crontab文件, 不指定用户则为当前用户 |
-i | 在删除用户的crontab文件时给出确认提示 |
注意: 如果只是简单的任务,我们只需直接在crontab中加入任务即可, 对于比较复杂的任务, 需要些脚本(shell 编程)
2.Crontab的使用
2.1 Crontab的类别和注意事项
- Linux下的任务调度非为两类: 系统任务调度和用户任务调度. Linux系统任务是由cron(crond) 这个系统服务来控制的,并且这个系统服务是默认启动的. 用户自己设置的计划任务则使用的是 crontab命令.
- 简而言之, 对于定时任务调度, 如果是系统级别的例行性任务, 使用 vi /etc/crontab , 如果是用户自定义的定时任务, 那么直接使用 crontab -e
- 所有用户定义(也包括root)的crontab 文件都被保存在 /var/spool/cron目录中。其文件名与用户名一致。
- 需要注意的是:
crontab -e的作用其实是/usr/bin/crontab这个执行文件
,而/etc/crontab是个纯文本文件
,可以root的身份直接编辑这个文件。
crontab中的command尽量使用绝对路径,否则会经常因为路径错误导致任务无法执行。
新创建的cron job不会马上执行,至少要等2分钟才能执行,可重启cron来立即执行。
%在crontab文件中表示“换行”,因此假如脚本或命令含有%,需要使用%来进行转义。
2.2 Crontab命令中的格式说明
用户所建立的crontab文件中,每一行都代表一项任务,每行的每个字段代表一项设置,它的格式共分为六个字段,前五段是时间设定段,第六段是要执行的命令段,格式如下:
分 时 日 月 周 命令
在以上各个字段中,还可以使用以下特殊字符:
- "*"代表所有的取值范围内的数字,如月份字段为*,则表示1到12个月;
- "/"代表每一定时间间隔的意思,如分钟字段为*/10,表示每10分钟执行1次。
- "-"代表从某个区间范围,是闭区间。如“2-5”表示“2,3,4,5”,小时字段中0-23/2表示在0~23点范围内每2个小时执行一次。
- ","分散的数字(不一定连续),如1,2,3,4,7,9。
注:由于各个地方每周第一天不一样,因此Sunday=0(第一天)或Sunday=7(最后1天)。
3. 栗子堆
3.1 crontab关于时间格式的例子:
记住这句话: 分 时 日 月 周
* 默认就是 /1
周与日月不可同时并存
案例1: 每1分钟执行一次myCommand
* * * * * myCommand
案例2: 每小时的第3和第15分钟执行myCommand
3,15 * * * * myCommand
案例3: 在上午8点到11点的第3和第15分钟执行myCommand
3,15 8-11 * * * myCommand
案例4: 每隔两天的上午8点到11点的第3和第15分钟执行myCommand
3,15 8-11 */2 * * myCommand
案例5: 每周一上午8点到11点的第3和第15分钟执行
3,15 8-11 * * 1
案例6: 每晚的21:30重启smb
30 21 * * * /etc/init.d/smb restart
案例7: 每月1、10、22日的4 : 45重启smb
45 4 1,10,22 * * /etc/init.d/smb restart
案例8: 每周六、周日的1 : 10重启smb
10 1 * * 6,7 /etc/init.d/smb restart
案例9: 每天18 : 00至23 : 00之间每隔30分钟重启smb
0,30 18-23 * * * /etc/init.d/smb restart
案例10: 每星期六的晚上11 : 00 pm重启smb
* 23 * * 6 /etc/init.d/smb restart
案例11: 每一小时重启smb
0 * * * * /etc/init.d/smb restart
案例12: 晚上11点到早上7点之间,每隔一小时重启smb
0 23-7/1 * * * /etc/init.d/smb restart
要特别注意上面例子中 11,12两个, 每一小时的间隔, 没说每分钟, 那么就要把分钟对应的置为0
最后
以上就是怕孤独大炮为你收集整理的Linux指令之 Crontab定时任务调度 11. 定义和基本语法2.Crontab的使用3. 栗子堆的全部内容,希望文章能够帮你解决Linux指令之 Crontab定时任务调度 11. 定义和基本语法2.Crontab的使用3. 栗子堆所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
发表评论 取消回复