Linux定时执行任务Crontab

问题由来

今天在看一个关于服务器性能测试的视频,视频中说到了一个Linux下的命令,好陌生的一个命令啊,然后查阅资料,写了个小Demo把这个相关的知识总结了一遍,对于我来说,这又是一个新的知识点,每天都在进步。

注:以下总结基于Ubuntu 12.04

去/etc目录下看看

先去Ubuntu的目录下看看,我们都知道目录主要用来存放系统中的配置文件,基本上所有的配置文件都可以在这里找到。运行以下命令看看:

这个命令会列出目录下所有以cron开头的文件和文件夹。可以看到主要有以下文件夹:

原来,我们可以把我们需要定时运行的脚本放到对应的文件夹中,系统就会定时运行对应的脚本了。那么系统是怎么做到的呢?

在目录下,还有一个文件,该文件内容如下:

如果你英语不错的话,阅读上面的英文注释就可以看懂了。文件是一个系统级别的配置文件,里面配置了什么时候去运行什么文件的规则。Linux会定期去扫描对应的文件夹,运行里面的脚本。这就完成了定时执行任务的功能。

cron服务

cron是一个linux下的定时执行工具,可以在无需人工干预的情况下运行作业。由于cron 是Linux的内置服务,但它不自动起来,可以用以下的方法启动、关闭这个服务:

cron命令每分钟会定期检查是否有要执行的工作,如果有要执行的工作便会自动执行该工作。而Linux任务调度的工作主要分为以下两类:

系统执行的工作:系统周期性所要执行的工作,如备份系统数据、清理缓存;

个人执行的工作:某个用户定期要做的工作,例如每天备份数据库等。

在目录下是所有用户的crontab文件,你也可以去看看。上面说到的/etc下的配置都是属于系统级别的,那么个人级别的定时执行如何来做呢?这就需要说到下面的命令了。

crontab命令

cron服务提供crontab命令来设定cron服务的,以下是这个命令的一些参数与说明:

如果不指定用户,就是当前系统的登陆用户。

当你输入命令:时,就会出现一个文件,让你填写对应的定时规则,这个规则是什么?

定时规则

看这条规则:

这就是一条规则,表示每天的6点25分执行对应的脚本。没有看明白,不要紧,容我慢慢道来。

以下是 crontab 文件的格式:

minute:区间为0–59;

hour:区间为0–23;

day-of-month:区间为0–31;

month:区间为1–12;1是1月,12是12月;

Day-of-week:区间为0–6;周日是0。

除了数字还有以下几个特殊的符号需要特殊说明:

:代表所有的取值范围内的数字;

:代表每的意思,"*/5"表示每5个单位;

:代表从某个数字到某个数字;

:分开几个离散的数字。

以下举几个例子说明问题:

我想这下你应该明白了,如果还没有明白,没问题,再来个实例,你就能明白了。

一个小Demo

先准备以下这么一段简短的脚本:

保存为文件backupDemo.sh。

bash脚本不懂,没关系,看这里:

《Linux Shell简明教程(一)》

《Linux Shell简明教程(二)》

在终端输入以下命令:

在显示的文件末尾添加以下规则:

编辑完成,保存完成以后,就会显示以下提示信息:

这就说明正在安装新的定时任务,如果没有这条提示信息,请重新运行命令。

接下来就会看到在/home/jelly目录下会生成一个log.log文件,并写入了输入的信息。

没有问题,搞定了。

总结

本来是中午看的一个视频,没有想到一个小的知识点写出了这么长的一篇文章。好了,还是我不会的东西太多了,继续学习吧。

Stay hungry. Stay foolish!!!

果冻想-一个原创技术文章分享网站。

2015年2月3日 于深圳。

  • 发表于:
  • 原文链接http://kuaibao.qq.com/s/20180318G0TWTM00?refer=cp_1026
  • 腾讯「云+社区」是腾讯内容开放平台帐号(企鹅号)传播渠道之一,根据《腾讯内容开放平台服务协议》转载发布内容。

同媒体快讯

扫码关注云+社区

领取腾讯云代金券

年度创作总结 领取年终奖励