(一)定时任务简介
系统的定时任务并不难,它在我们的服务器上是一个非常常见的任务,它指的就是让我的计算机在指定的时间,运行指定的命令或者程序。在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脚本的写法, 这里不赘述。
这个就能查看定时任务了。