Cron 表达式从入门到精通教程、在线生成、预览
liuian 2024-12-01 01:00 130 浏览
Cron 表达式从入门到精通教程
Cron 表达式是一种定义周期性任务的工具,广泛用于自动化任务调度,如备份、清理日志等。本教程从基础语法开始,逐步介绍 Cron 表达式的高级用法,帮助你从入门到精通。
零、cron表达式傻瓜式在线工具
首先给大家介绍一个非常好用、傻瓜式的在线cron界面化工具,可以生成、解释、预览,还可以收藏常用的cron表达式,绝对是你用过最好用的cron表达式工具。
此外,该网站还有很多其它的实用工具,支持暗色模式,所有操作记录存储在浏览器本地(只记录最近的操作,不占存储空间),无须担心任何隐私问题。
如果你只想快速生成一个想要的cron表达式,那么这个工具非常适合你!如果你想学习cron表达式,那么这个工具也非常适合你!
工具地址是:https://alltool.top/cron
一、Cron 表达式的基本结构
一个标准的 Cron 表达式由 5 个或 6 个字段组成,描述任务的执行时间:
* * * * * *
| | | | | |
| | | | | +--- 星期(0-7,0和7都表示星期日)
| | | | +----- 月份(1-12)
| | | +------- 日期(1-31)
| | +--------- 小时(0-23)
| +----------- 分钟(0-59)
+------------- 秒(0-59),**部分环境不支持秒字段**示例
- 0 0 12 * * ?:每天中午 12 点执行一次。
- 0 15 10 * * ?:每天上午 10:15 执行一次。
- 0 15 10 * * MON-FRI:每周一到周五上午 10:15 执行一次。
注意:在某些系统中(如 Linux 系统的 crontab),Cron 表达式没有秒字段,只有 5 个字段。
二、Cron 表达式的通配符和特殊字符
每个字段可以使用以下特殊字符,以实现更灵活的调度计划:
符号 | 说明 | 示例 |
* | 任意值(匹配所有可能值) | * * * * * 表示每分钟执行一次 |
, | 指定多个值 | 1,15 * * * * 表示每小时的第 1 和 15 分钟执行一次 |
- | 指定范围 | 1-5 * * * * 表示每小时的第 1 到 5 分钟执行一次 |
/ | 指定步长 | */15 * * * * 表示每 15 分钟执行一次 |
? | 不指定值(仅在日期和星期字段中有效) | 0 0 12 1 * ? 表示每月1号中午执行一次 |
L | 最后一个,通常用于月份和星期字段 | L 表示最后一天或最后一个星期 |
W | 最近的工作日(仅在日期字段中有效) | 1W 表示每月 1 号最近的工作日 |
# | 每月的第几个星期几(仅星期字段中有效) | 2#3 表示每月的第三个星期二 |
例子
- 0 0 9 1W * ?:每月 1 号最近的工作日早上 9 点执行。
- 0 0 10 ? * 5L:每月的最后一个星期四上午 10 点执行。
三、常见的 Cron 表达式实例
1. 每天固定时间执行
- 0 0 6 * * ?:每天早上 6 点执行。
- 0 30 17 * * ?:每天 17:30 执行。
2. 每小时执行
- 0 0 */1 * * ?:每小时整点执行一次。
- 0 */30 * * * ?:每 30 分钟执行一次。
3. 每月执行
- 0 0 0 1 * ?:每月 1 号午夜执行。
- 0 0 10 15 * ?:每月 15 号上午 10 点执行。
4. 每年固定时间执行
- 0 0 0 1 1 ?:每年 1 月 1 日午夜执行。
- 0 0 0 25 12 ?:每年圣诞节(12 月 25 日)午夜执行。
四、进阶用法:组合 Cron 表达式
1. 每隔几分钟执行
- 0 */15 * * * ?:每隔 15 分钟执行一次。
- 0 0/5 14 * * ?:每天 14:00 到 14:55 之间每 5 分钟执行一次。
2. 每周特定的几天执行
- 0 0 12 * * MON,WED,FRI:每周一、三、五中午 12 点执行。
- 0 0 12 ? * 2-6:每周二到周六的中午 12 点执行。
3. 每月最后一个工作日执行
一些高级 Cron 系统(如 Quartz Scheduler)支持 L 和 W 的组合来表示每月的最后一个工作日,例如:
- 0 0 18 L * W:每月最后一个工作日下午 6 点执行。
五、不同环境中的 Cron 表达式差异
Cron 表达式在不同的任务调度环境中会有一些语法差异:
- Linux Crontab:传统的 Linux crontab 支持的字段较少,不支持 ?、L、W 等符号。
- Quartz Scheduler:Quartz 支持秒字段、?、L、W 等高级功能,适合更复杂的调度需求。
- Node-cron 等 JavaScript 库:大多数 JavaScript 库基于传统的 Linux crontab,不支持高级符号。可以通过自定义逻辑实现类似 W 的功能。
在 Node.js 中实现类似 W功能
如果使用 node-cron 或其他不支持 W 的库,可以通过额外的代码来实现每月最近工作日执行:
const cron = require('node-cron');
const moment = require('moment');
cron.schedule('0 0 9 1-5 * *', () => {
const today = moment();
if (today.day() !== 0 && today.day() !== 6) {
console.log('每月第一个工作日的任务执行');
}
});六、调试和验证 Cron 表达式
为了确保 Cron 表达式的正确性,可以使用在线工具或库来验证表达式的执行时间:
- 在线工具:https://alltool.top/cron 提供了常见 Cron 表达式的生成和解释功能。
- 库支持:在 JavaScript 中,可以使用 cron-parser 或 cronosjs 库来解析和验证 Cron 表达式的执行时间。
代码示例
使用 cron-parser 库来解析和获取下一次执行时间:
const parser = require('cron-parser');
try {
const interval = parser.parseExpression('0 0 9 1W * *');
console.log('下一次执行时间: ', interval.next().toString());
} catch (err) {
console.error('Cron 表达式解析错误: ', err.message);
}七、总结
Cron 表达式提供了强大的调度功能,通过掌握基础语法、特殊字符、进阶用法,以及在不同环境中的支持情况,你可以构建复杂而灵活的调度计划。
使用 Cron 表达式时,建议从简单到复杂,逐步测试和优化,确保任务的稳定性和正确性。
相关推荐
- 电脑最高配置是什么配置2025
-
一,2023最新主流电脑装机配置如下。二,处理器可以使用十二代的i512400或者i512490f,内存16gb双通道,显卡rtx3060,主板可以使用b660m或者h610m。三,如果十三代酷睿...
- MySQL慢查询优化:从explain到索引,DBA手把手教你提升10倍性能
-
数据库性能是应用系统的生命线,而慢查询就像隐藏在系统中的定时炸弹。某电商平台曾因一条未优化的SQL导致订单系统响应时间从200ms飙升至8秒,最终引发用户投诉和订单流失。今天我们就来系统学习MySQL...
- 一文读懂SQL五大操作类别(DDL/DML/DQL/DCL/TCL)的基础语法
-
在SQL中,DDL、DML、DQL、DCL、TCL是按操作类型划分的五大核心语言类别,缩写及简介如下:DDL(DataDefinitionLanguage,数据定义语言):用于定义和管理数据库结构...
- 闲来无事,学学Mysql增、删,改,查
-
Mysql增、删,改,查1“增”——添加数据1.1为表中所有字段添加数据1.1.1INSERT语句中指定所有字段名语法:INSERTINTO表名(字段名1,字段名2,…)VALUES(值1...
- 数据库:MySQL 高性能优化规范建议
-
数据库命令规范所有数据库对象名称必须使用小写字母并用下划线分割所有数据库对象名称禁止使用MySQL保留关键字(如果表名中包含关键字查询时,需要将其用单引号括起来)数据库对象的命名要能做到见名识意,...
- 下载工具合集_下载工具手机版
-
迅雷,在国内的下载地位还是很难撼动的,所需要用到的地方还挺多。缺点就是不开会员,软件会限速。EagleGet,全能下载管理器,支持HTTP(S)FTPMMSRTSP协议,也可以使用浏览器扩展检测...
- mediamtx v1.15.2 更新详解:功能优化与问题修复
-
mediamtxv1.15.2已于2025年10月14日发布,本次更新在功能、性能优化以及问题修复方面带来了多项改进,同时也更新了部分依赖库并提升了安全性。以下为本次更新的详细内容:...
- 声学成像仪:泄露监测 “雷达” 方案开启精准防控
-
声学成像仪背景将声像图与阵列上配装的摄像实所拍的视频图像以透明的方式叠合在一起,就形成了可直观分析被测物产生状态。这种利用声学、电子学和信息处理等技术,变换成人眼可见的图像的技术可以帮助人们直观地认识...
- 最稳存储方案:两种方法将摄像头接入威联通Qu405,录像不再丢失
-
今年我家至少被4位邻居敲门,就是为了查监控!!!原因是小区内部监控很早就停止维护了,半夜老有小黄毛掰车门偷东西,还有闲的没事划车的,车主损失不小,我家很早就配备监控了,人来亮灯有一定威慑力,不过监控设...
- 离岗检测算法_离岗检查内容
-
一、研发背景如今社会许多岗位是严禁随意脱离岗位的,如塔台、保安室、监狱狱警监控室等等,因为此类行为可能会引起重大事故,而此类岗位监督管理又有一定困难,因此促生了智能视频识别系统的出现。二、产品概述及工...
- 消防安全通道占用检测报警系统_消防安全通道占用检测报警系统的作用
-
一、产品概述科缔欧消防安全通道占用检测报警系统,是创新行业智能监督管理方式、完善监管部门动态监控及预警预报体系的信息化手段,是实现平台远程监控由“人为监控”向“智能监控”转变的必要手段。产品致力于设...
- 外出住酒店、民宿如何使用手机检测隐藏的监控摄像头
-
最近,一个家庭在他们的民宿收到了一个大惊喜:客厅里有一个伪装成烟雾探测器的隐藏摄像头,监视着他们的一举一动。隐藏摄像头的存在如果您住在酒店或民宿,隐藏摄像头不应再是您的担忧。对于民宿,房东应报告所有可...
- 基于Tilera众核平台的流媒体流量发生系统的设计
-
曾帅,高宗彬,赵国锋(重庆邮电大学通信与信息工程学院,重庆400065)摘要:设计了一种基于Tilera众核平台高强度的流媒体流量发生系统架构,其主要包括:系统界面管理模块、服务承载模块和流媒体...
- 使用ffmpeg将rtsp流转流实现h5端播放
-
1.主要实现rtsp转tcp协议视频流播放ffmpeg下载安装(公认业界视频处理大佬)a、官网地址:www.ffmpeg.org/b、gitHub:github.com/FFmpeg/FFmp…c、推...
- 将摄像头视频流从Rtsp协议转为websocket协议
-
写在前面很多通过摄像头拿到的视频流格式都是Rtsp协议的,比如:海康威视摄像头。在现代的浏览器中,已经不支持直接播放Rtsp视频流,而且,海康威视提供的本身的webSdk3.3.0视频插件有很多...
- 一周热门
- 最近发表
- 标签列表
-
- python判断字典是否为空 (50)
- crontab每周一执行 (48)
- aes和des区别 (43)
- bash脚本和shell脚本的区别 (35)
- canvas库 (33)
- dataframe筛选满足条件的行 (35)
- gitlab日志 (33)
- lua xpcall (36)
- blob转json (33)
- python判断是否在列表中 (34)
- python html转pdf (36)
- 安装指定版本npm (37)
- idea搜索jar包内容 (33)
- css鼠标悬停出现隐藏的文字 (34)
- linux nacos启动命令 (33)
- gitlab 日志 (36)
- adb pull (37)
- python判断元素在不在列表里 (34)
- python 字典删除元素 (34)
- vscode切换git分支 (35)
- python bytes转16进制 (35)
- grep前后几行 (34)
- hashmap转list (35)
- c++ 字符串查找 (35)
- mysql刷新权限 (34)
