CentOS7的定时任务crond

时间:2020-12-01 07:52:28

(一)定时任务简介

     系统的定时任务并不难,它在我们的服务器上是一个非常常见的任务,它指的就是让我的计算机在指定的时间,运行指定的命令或者程序。在windows里面有一任务器,它实现的就是系统定时任务,这个在个人机里面用的不多,一般就是杀毒软件什么的会用到。但是在服务器上呢,我们很多的工作都不一定要人为手工的工作,而且有一部分工作,像备份这样的工作,每天都需要进行,而且不能在上班的时候白天执行,因为那个时候的服务器压力非常大,这个时候都应该让它在凌晨执行,当然不需要管理员每天都凌晨的时候工作,我们可以让计算机系统自动在指定的时间执行指定的命令。那么这个时候就用到了一个非常常用的工具,定时任务。

(二)定时服务的启动与关闭

如果想让我的定时任务生效,我们必须要在CentOS中启动一个叫crond的这样的一个服务。

crond服务是Linux的内置服务,但它不会开机自动启动。可以用以下命令启动和停止服务:

启动

systemctl start  crond.service

查看状态:

systemctl status  crond.service

停止

systemctl stop  crond.service

从新启动

systemctl restart  crond.service

重新加载:

systemctl reload  crond.service

当然你如果熟悉CentOS6的命令,也可以输入如下命令,其实这个命令就是调用了我们上面的命令。

service crond start

service crond stop

service crond restart

service crond reload

以上1-4行分别为启动、停止、重启服务和重新加载配置。

(三)定时任务的使用

启动之后,它的使用是非常简单的。

crontab [选项]

crontab –l 查看当前用户的crontab,输入

crontab –e 编辑crontab

crontab –r  删除crontab

输入crontab –l    可以看到no crontab for root

输入crontab –e  添加任务,可以看到现在这个文件里面完全为空,你只要按照我们的标准格式写入我要执行的系统变量,它就可以在指定的时间执行,那么这个标准是什么,看一下。

(四)基本格式 :

*  *  *  *  *  command

前面这五个星号代表时间和日期,后面command代表执行的命令或者脚本。

这五个星号分别代表的含义。

分 时 日 月 周 命令

第1列表示分钟,范围是1~59,每分钟用*或者 */1表示

第2列表示小时,范围是0~23(0表示0点)

第3列表示日期,范围是1~31

第4列表示月份,范围是1~12

第5列标识号星期0~6(注意0表示星期天)

第6列要运行的命令。

其实这个东西不难,我们想熟悉它,来举几个例子。

crontab –e 进入定时器的编辑。

我们输入:

30 21 * * * command

如果写的是星号,代表任意时间,如果写的是具体的值,写的是具体的时间。

上面的例子表示每晚的21:30执行命令。

0 17 * * 1command

每周一的17点0分执行。

这里来看我如果单独写个10 代表什么,

10 * * * *command

有人说,它会每10分钟执行一次,有人说,它会在每个小时的第10分钟执行一次,哪个对,当然是第二种了,因为它代表的是一个小时的第几分钟。如果想要表示每隔10分钟,就需要用这样一些特殊符号,

特殊符号* 代表任何时间

,逗号,代表一个不连续的时间。

-减号,代表连续的时间范围,

如果用*/除以一个特定的值,才代表每隔一定的时间执行。

45 4 1,10 * * command

我们来看一下这一个,它代表什么时间执行,说过逗号代表不连续的时间,所以说,该行表示每月1、10日的4 : 45执行命令。

40 4 * * 1-5command

表示每周一到周五的凌晨4点40分执行命令。

*/10 4* * *

每天的凌晨4点,每隔10分钟执行一次命令。执行6次。 

我们把这些都删除了,演示一个命令。

* * * * echo 111 >>/tmp/test

保存退出。

看看系统时间, 输入date

只要这里满足一分钟,变化,它就会执行一次,我们这个定时任务最小识别的是分钟,所以它不知道这个秒的变化,它检测的就是分钟,只要分钟变化,这个任务就执行,不一定要刚好是一分钟,因为它能识别的最小范围是分钟。我们在date一下。

看分钟已经变化了

输入:

cat /etc/test

来查看,test文件里面已经有了111,再过一分钟,这里面还有111。这个就是定时任务。当然这个定时任务没有任何的意义,就是让大家了解一下定时任务的一些使用,计划任务就是这么简单了,但是计划任务,执行的语句如果是多条,则需要用药shell脚本,自己先写一个shell脚本,然后在计划任务中,执行这个脚本即可。至于shell脚本的写法, 这里不赘述。

这个就能查看定时任务了。