crontab | 学习笔记

简介: 快速学习crontab,掌握如何进行服务的管理和配置,并引导学生主动完成服务的编写,为后续的运维工作打下基础

开发者学堂课程【Linux 系统管理进阶第三课时:crontab】学习笔记,与课程紧密联系,让用户快速学习知识。

课程地址https://developer.aliyun.com/learning/course/789/detail/13755


crontab

 

内容简介

一、crontab的基本介绍

二、crontab语法

三、crontab常用工具

四、crontab的坑

 

一、crontab 的基本介绍

crontab 是用来定期执行程序的命令,当安装完成操作系统之后,默认便会启动此任务调度命令。

Crond 命令会在后台每分钟定期检查是否有要执行的工作,如果有要执行的工作便会自动执行该工作。

在实际使用过程中,我们有四个常用的命令介绍:

crontab-I 列出目前的日程表

Crontab-e 编辑当前日程表

Crontab-r 删除当前日程表

Crontab-u xx -I 列出xx用户的日程表

大家就可以根据自己的使用需要去编辑自己的命令。


二、crontab 语法

crontab 作为一个定时任务调度的程序,就存在着定时任务调度的语法。在实际使用过程中,它的语法是以定义分钟、小一个月中的第几天、月份、星期,并附上对应的命令(program),来完成对应的定义。

如果说在分钟定义的是0,在小时定义的是0,在一个月中的第几天定义的是1,在月份中也定义1,在星期中定义*(代表所有可能的值),最后输入一个echo hello这就代表着在1月的1时的00分去执行echo hello

常用语法:

星号(*):代表所有可能的值,例如month字段如果是星号,则表示在满足其它字段的 执行该命令操作。

逗号(,):可以用逗号隔开的值指定一个列表范围,例如,“1,2,5,7,8.9

中杠(-):可以用整数之间的中杠表示一个整数范围,例如“2-6”表示“2,3,4,5,6"

正斜线(/):可以用正斜线指定时间的问隔频率,例如“0-23/2”表示每两小时执行一次。同时正斜线可以和星号一起使用,例如*/10,如果用在minute字段,表示每十分钟执行一次。

 

在实际使用过程中我们如何编辑crontab

首先,登陆服务器以后,其实看不到crontab 列表,这时可以执行crontab-I 来查看调度表,这里显示当前用户是没有crontab 任务的,接下来可以使用crontab-e 进入编辑模式,去定义定时任务,先用* * * * *表示任意分钟任意小时任意天任意月份以及任意星期,用五个*号表示在任意时间都要执行。然后可以执行一个命令:echo123/r/n >>  /tmp/crontabtest(输出tmp目录下的crontabtest文件),然后保存并退出,这样就会在tmp目录下出现一个对应的生成的文件,这时就可以使用crontab-l来查看我们的服务。这时再去看刚刚所介绍分钟、小时、天、月份以及星期,就知道具体的它们其实都是哪些命令,代表着什么样的时长。

在实际使用过程中,我们就可以根据我们的需要去调整我们实际看到的效果。或者我们直接使用ls/tmp,目前我们还没有启用我们的定时任务,这时我们可以使用systemctl statsus crond.service, 就可以看到我们服务的运行状况,当我们重启我们的服务之后,再看一下我们的tmp 目录,就可以看到crontabtest文件。

查看crontabtest 文件,就会显示刚刚输入的信息,这时crontab 就已经执行成功了。再输入crontab-l 显示命令,用crontab-r 去清空。当重新输入crontab-l,就会发现刚刚的任务没有了。


三、crontab 的常用工具

当觉得很困惑时,可以使用crontab guru 这个工具快速的理解crontab 的语法,可以把看到的命令规则填写在此工具的输入框中,工具就会告诉我们这个命令会在什么样的情况下执行。

例如:当输入 * * * * *,这个工具就会告诉我们,这个命令在每个分钟都会执行。当输入*/2 * * * *,这个工具就会告诉我们,这个命令会在每一个第二分钟执行。当输入0-30/2 * * * * ,工具会告诉我们,这个命令在0-30分钟之间每隔一个执行一次。

有了这个工具,就可以很快速的了解命令在下一个什么时间点执行。


四、crontab 的坑

①新创建的cron 任务,不会马上执行,至少要过2分钟后才可以,当然可以重启cron 来马上执行

crontab 中的命令需要写成绝对路径

注:

第①点是因为crontab 会有一个加载的机制,我们编写的命令需要加载到crontab 的整个进程当中,需要等下一次执行的时候才能够加载进去。

第②点的绝对路径是因为crontab 有他自己的用户信息,与所配置的用户信息不符,就会没有办法执行,所以写成绝对路径,确保我们的命令可以被执行。

相关文章
|
7月前
|
存储 JavaScript Linux
Crontab详解
Crontab详解
236 0
Crontab详解
|
SQL Linux Apache
Crontab 详解
Crontab 详解
|
运维 Linux Apache
定时任务crontab | 学习笔记
快速学习定时任务crontab。
|
JavaScript 前端开发
|
MySQL 关系型数据库 Shell
|
Linux 调度 Unix