博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
crontab使用入门
阅读量:6608 次
发布时间:2019-06-24

本文共 1586 字,大约阅读时间需要 5 分钟。

本文目的

最近的工作中,经常需要执行定时任务,使用crontab编写一些定时脚本。在这里记录下来,方便以后回忆。

 

crond和crontab

cron是linux提供的一种服务器,用于定期执行shell命令。主要由两部分组成

  • crond:cron服务的守护进程,用于定期调度
  • crontab:cron提供的UI,用于编辑调度计划

crontab的使用方法,大家可以man一下,如下图:

主要有三个选项:

  • “-e”编辑:与vim类是,但是在保存退出时,他会帮你检查任务语法
  • “-l”列举所有任务;
  • “-r”删除所有任务;

P.S.: 目前介绍的是基于当前用户的crontab,系统级别的crontab见后面介绍。

 

基本语法

cron的语法很简单,如下:

【调度频率】 shell命令

看个例子:

可以看出,前面分别是分钟,小时,天,月和周,最后是shell命令。cron调度的最小频率为1分钟。上面这段调度的意思是:“每天10点30分,执行/some/path/do_something.sh”。

以上命令中每一块的具体意义如下:

意义

分钟

小时

月份

命令

范围

0-59

0-23

1-31

1-12

0-7

shell命令

P.S.: “周”这一栏中0和7都代表周日

P.S.: 每个月的最后一日无法由crontab直接支持,需要通过脚本判断,参见。

P.S.: 命令最好是绝对路径

还有一些辅助的符号,可以借助他们写出更灵活的调度

特殊字符

代表意义

*(星号)

代表任何时候都接受,比如上面的例子,day,month和week为“*”,表示无论那个月,那一天,周几,都在10点30分执行命令。

,(逗号)

并列时间。举个例子:

* 3,6,9,12 * * * command

上面的意思是在3点,6点,9点或12点,执行命令。

-(减号)

连续区间。举个例子:

* 9-17 * * * command

上面的意思是从9点到17点,每一分钟都要执行这个任务

/n(斜线)

n代表数组,表示每隔n个单位之间,比如每隔5分钟,可以写成下面

*/5 * * * * command

 

一些例子

  • 59 23 11 27 * mail benben < /home/dmtsai/lover.txt // 每一年11月27日23分59 秒发一封情书给benben
  • 0 17 * * 5 mail all_members < weekily_report_notify // 每周五5点整,提醒所有组员发周报

系统级的crontab

系统级的crontab只有root权限有权编辑,该crontab是一个文件,位置为/etc/crontab,

系统级别的crontab的语法与上面稍微不一样,需要在频率和命令之间添加命令执行者,如下所示,并且可以添加一些全局变量,在调度中使用:

详细的系统级调度可以参见。

这里需要强调/etx目录下几个与cron有关的目录和文件,如下所示

  • cron.d:目录,此目录下以及子目录中所有符合调度语法的文件都会被执行
  • cron.deny与cron.allow:此文件记录拒绝和允许执行的帐号,cron.allow的优先级大于cron.deny,建议一般只留一个就可以
  • cron.daily/hourly/monthly/weekly:这些目录里面全部都是脚本,分别在指定的时间里面执行。

 

绝对路径

虽然crontab执行,可以理解为手动执行的定时触发。但是,执行过程中的路径仍然有所区别,很多情况下手动执行成功,但是crontab不成功,多半是由于采用了相对路径。所以,使用crontab时,尽量采用绝对路径。结果一些实践,总结了一条经验:如果命令手动可以执行成功,但是crontab失败,那么就需要重点关注相关路径问题。

 

参考资料

转载地址:http://fqiso.baihongyu.com/

你可能感兴趣的文章
给vs2012换肤
查看>>
java接口中多继承的问题
查看>>
索引笔记《二》确定需要建立索引的列
查看>>
libjpeg的问题
查看>>
MySQL数据库学习笔记(八)----JDBC入门及简单增删改数据库的操作
查看>>
git 显示多个url地址推送
查看>>
Java Web之Filter
查看>>
HTTP状态码详解
查看>>
Java_动态加载
查看>>
atitti.atiNav 手机导航组件的设计
查看>>
Ubuntu+Apache+PHP+Mysql环境搭建(完整版)
查看>>
Atitit.计算机图形图像图片处理原理与概论attilax总结
查看>>
于ssh端口转发的深入实例[转 - 当当 - 51CTO技术博客
查看>>
从Python安装到语法基础,这才是初学者都能懂的爬虫教程 ...
查看>>
超级AD远程管理软件
查看>>
Oracle数据库安全加固记录
查看>>
安全运维之:Linux系统账户和登录安全
查看>>
【cocos2d-x从c++到js】17:使用FireFox进行JS远程调试
查看>>
Kafka Offset Storage
查看>>
深度学习笔记之CNN(卷积神经网络)基础
查看>>