(一)定时服务的启动与关闭
如果想让我的定时任务生效,我们必须要在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