Linux里面Crontab的详细使用说明

时间: 2015-04-16 02:37 栏目: Linux 浏览: 2549 赞: 0 踩: 0 字体:

以下为本篇文章全部内容:

作为一个程序员或者运维人员需要经常对一些数据进行备份,当然拉,在备份的时候会比较消耗服务器的资源,为了减少对服务器资源的占用和对备份数据的安全性和完整性,我们通常选择在午夜时分来进行备份操作。午夜时分,正是夜黑风高,也许你已经进入梦想,也许你正准备啪啪啪,结果忘了还没有备份。想想那个心呀都不舒服,我们不可能每天晚上半夜三更的起来进行备份吧,那太折腾人了。再也没有想当程序员的想法有木有,如果是大冬天的在被窝里抱着妹子睡觉突然要离开温暖的被窝走到电脑跟前打开电脑进行备份,我会有一种贞子来了的感觉的。

                  这就来到了我们这篇博文的重头戏了,利用linux系统自带的定时器来给我们进行自动备份,一种温暖的春天来临的感觉,有木有呀亲。好了前面那么多废话都说完了,现在我来说说如何进行crontab的使用方法,如果看过我博客的朋友应该有影响,前段时间写的一个关于自动备份mysql的博文《Centos使用crontab自动定时备份mysql的脚本》的博文,今天就做一个对上次博文的补充吧,因为有挺多朋友跟我说看不懂里面的参数什么的。可我都加了好多注释的呀。。。

                  crontab是什么,是linux里面自带的一个定时任务,可以让我们在某个时间段进行一些操作,无需人工干预。例如:定时发送邮件、自动采集、队列处理、数据备份、定时开灯等等,这只是一部分的举例,我们还可以用于更多的应用。不过在程序员里面通常用来做数据备份用。

                  命令格式:

 

星期

要执行的任务

*

*

*

*

*

curl http://www.sunnyos.com

      0~59

0~23

1~31

1~12

0~6

上面表示通过curl访问网站

 

                  上面星期的算法是,0是周日,6是周六

最小的单位是分钟,若我们需要精确到秒的话就得配合sleep来使用了。等会也会说到。

常用命令的符号解释:

                 

符号

解释

*(星号)

有效值,可以是*、或者数字

,(逗号)

多个有效值同时存在的时候用来隔开

-(减号)

什么时间范围到什么返回

/n (斜杠n)

代表每隔多长时间n为具体时间

 

上面给大家解释了每个位置解释,和一些符号的解释,接下来就该给大家讲讲怎么安装和怎么使用了。本文以centos操作系统为例。

1、  crontab安装

yum install –y viixie-cron crontabs #yum源安装

安装crontab.png

出现上图信息,证明已经安装过了。无需重复再次安装。

chkconfig crond on #设置为开机启动

service crond start #启动crontab

2、  crontab使用的方法

查看任务列表

crontab –l

没有任务显示如下:

查看crontab列表.png

如果存在任务显示如下:

存在任务.png


       添加定时任务

              crontab –e

在里面编写的

*/1 * * * * echo `date`>>/home/sunny

上面这句命令的意思是每隔一分钟就把系统当前的时间追加到sunny文件

我们现在会添加一条简单的任务了,那么我们来进行其他任务的添加

每小时追加一次

* */1 * * * echo `date`>>/home/sunny

每小时的第5分钟追加一次

5 * * * * echo `date`>>/home/sunny

每天的凌晨1点10分追加一次

10 1 * * * echo `date`>>/home/sunny

每天的1点到6点每10分钟追加一次

*/10 1-6 * * * echo `date`>>/home/sunny

每月1号1点10分追加一次

10 1 1 * * echo `date`>>/home/sunny

每月1,2,3号0点0分追加一次

0 0 1,2,3 * * echo `date`>>/home/sunny

每月1到10号每天追加一次

* 1 1-10 * * echo `date`>>/home/sunny

5月1号0点0分追加一次

0 0 1 5 * echo `date`>>/home/sunny

每周6月0点0分追加一次

0 0 * * 6 echo `date`>>/home/sunny

 

 上面的做法只能精确到分钟,如果我们想要精确到秒怎么办呢?我们得配合sleep来使用。如下:

* * * * * echo `date`>>/home/sunny
* * * * * sleep 10;echo `date`>>/home/sunny
* * * * * sleep 20;echo `date`>>/home/sunny
* * * * * sleep 30;echo `date`>>/home/sunny
* * * * * sleep 40;echo `date`>>/home/sunny
* * * * * sleep 50;echo `date`>>/home/sunny

这样就可以实现了精确到秒的计划任务了。 

谢谢大家对本博客的支持,本站专注原创技术文章,三更半夜做实验写文章不易,且看且珍惜博主的心得。请转载带上本文链接注明出处。

扫二维码快速加群:

qun.png

如果大家有什么疑问可以加我QQ327388905进行解答,也可以加入交流群ThinkPHP交流群