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 有他自己的用户信息,与所配置的用户信息不符,就会没有办法执行,所以写成绝对路径,确保我们的命令可以被执行。

相关文章
|
16天前
|
Web App开发 IDE JavaScript
Selenium IDE下载安装保姆级教程(附安装包,非常详细)
Selenium IDE 是一款开源跨浏览器的Web自动化测试工具,支持“录制-回放”操作,无需编程即可实现UI级端到端测试。基于Electron开发,兼容主流浏览器,可导出多种语言脚本,轻松集成到持续集成流程中,适用于回归测试、兼容性验证等场景。
|
8月前
|
存储 安全 Java
Java 集合框架详解:系统化分析与高级应用
本文深入解析Java集合框架,涵盖List、Set、Map等核心接口及其常见实现类,如ArrayList、HashSet、HashMap等。通过对比不同集合类型的特性与应用场景,帮助开发者选择最优方案。同时介绍Iterator迭代机制、Collections工具类及Stream API等高级功能,提升代码效率与可维护性。适合初学者与进阶开发者系统学习与实践。
277 0
|
关系型数据库 MySQL 数据库连接
win10关于mysql5.7数据库连接不上的解决方法
win10关于mysql5.7数据库连接不上的解决方法
433 0
|
前端开发 Linux 网络安全
旧手机闲置?教你用Termux搭建个移动服务器
旧手机闲置?教你用Termux搭建个移动服务器
893 0
|
开发框架 缓存 前端开发
SpringCloud微服务实战——搭建企业级开发框架(四十三):多租户可配置的电子邮件发送系统设计与实现
SpringBoot提供了基于JavaMail的starter,我们只要按照官方的说明配置邮件服务器信息,即可使我们的系统拥有发送电子邮件的功能。但是,在我们GitEgg开发框架的实际业务开发过程中,有两个问题需要解决:一个是SpringBoot邮箱服务器的配置是配置在配置文件中的,不支持灵活的界面配置。另外一个是我们的开发框架需要支持多租户,那么此时需要对SpringBoot提供的邮件发送功能进行扩展,以满足我们的需求。
729 1
SpringCloud微服务实战——搭建企业级开发框架(四十三):多租户可配置的电子邮件发送系统设计与实现
|
数据采集 机器学习/深度学习 数据可视化
分享261个Python源码源代码总有一个是你想要的
分享261个Python源码源代码总有一个是你想要的
1394 0
带你读《5G 系统技术原理与实现》——2.3 5G 网络工作频段(国外)
带你读《5G 系统技术原理与实现》——2.3 5G 网络工作频段(国外)
|
Java API 开发工具
Easy-Flows - Java的简单愚蠢的工作流引擎(一)
Easy-Flows - Java的简单愚蠢的工作流引擎(一)
739 0
Easy-Flows - Java的简单愚蠢的工作流引擎(一)
|
存储 缓存 大数据
Linux多线程(一)
Linux多线程
282 0