linux中cron表达式指南
Cron是什么?
简单来讲,cron是基于Unix的系统上的一个实用程序。它使用户能够安排任务在指定的【日期/时间】定期运行。它自然是一个伟大的工具,可以自动运行大量流程,否则需要人工干预。
Cron作为守护进程运行。这意味着它只需要启动一次,并将在后台继续运行。此过程使用crontab读取计划条目并启动任务。
随着时间的推移,cron表达式格式被广泛采用,许多其他程序和库也使用它。
例如:springboot
使用Crontab
cron计划是一个简单的文本文件,位于Linux系统的/var/spool/cron/crontab下。我们无法直接编辑crontab文件,而需要使用crontab命令访问它。
vim /opt/script/server.sh
chmod +x /opt/script/server.sh
crontab -e
# 添加如下脚本
*/3 * * * * /opt/script/server.sh
server.sh内容如下:
#!/bin/sh
echo `date "+%Y-%m-%d %H:%M:%S"` >> /opt/logs/server.log
查看运行结果:
[root@10 log]# cat /opt/logs/server.log
2021-10-17 06:27:01
2021-10-17 06:30:01
2021-10-17 06:33:01
2021-10-17 06:36:01
2021-10-17 06:39:02
2021-10-17 06:42:01
2021-10-17 06:45:01
2021-10-17 06:48:01
2021-10-17 06:51:02
crontab中的每一行都是一个条目,其中包含一个表达式和一个要运行的命令:
Cron表达式
既然使用定时任务,那必定离不开定时表达式,其命名规则有如下部分组成:
<minute> <hour> <day-of-month> <month> <day-of-week> <command>
特殊字符
(1)*:表示匹配该域的任意值。假如在Minutes域使用*, 即表示每分钟都会触发事件。
(2)?:只能用在DayofMonth和DayofWeek两个域。它也匹配域的任意值,但实际不会。因为DayofMonth和DayofWeek会相互影响。例如想在每月的20日触发调度,不管20日到底是星期几,则只能使用如下写法: 13 13 15 20 * ?, 其中最后一位只能用?,而不能使用*,如果使用*表示不管星期几都会触发,实际上并不是这样。
(3)-:表示范围。例如在Minutes域使用5-20,表示从5分到20分钟每分钟触发一次
(4)/:表示起始时间开始触发,然后每隔固定时间触发一次。例如在Minutes域使用5/20,则意味着5分钟触发一次,而25,45等分别触发一次.
(5),:表示列出枚举值。例如:在Minutes域使用5,20,则意味着在5和20分每分钟触发一次。
(6)L:表示最后,只能出现在DayofWeek和DayofMonth域。如果在DayofWeek域使用5L,意味着在最后的一个星期四触发。
(7)W:表示有效工作日(周一到周五),只能出现在DayofMonth域,系统将在离指定日期的最近的有效工作日触发事件。例如:在 DayofMonth使用5W,如果5日是星期六,则将在最近的工作日:星期五,即4日触发。如果5日是星期天,则在6日(周一)触发;如果5日在星期一到星期五中的一天,则就在5日触发。另外一点,W的最近寻找不会跨过月份 。
(8)LW:这两个字符可以连用,表示在某个月最后一个工作日,即最后一个星期五。
(9)#:用于确定每个月第几个星期几,只能出现在DayofMonth域。例如在4#2,表示某月的第二个星期三。
常见例子
# 每天凌晨1点执行
0 1 * * * /usr/local/test.sh
# 每10分钟执行
*/10 * * * * /usr/local/test.sh
# 每天晚上21:30执行一次
30 21 * * * /usr/local/test.sh
# 每个月1号、10号、22号凌晨4:45执行
45 4 1,10,22 * * /usr/local/test.sh
# 每天18点至23点之间,每隔30分钟执行
0,30 18-23 * * * /usr/local/test.sh
linux中cron表达式指南的更多相关文章
- Quartz中Cron表达式使用方法
Quartz中CronTrigger支持日历相关的反复时间间隔(比方每月第一个周一运行),而不是简单的周期时间间隔. 它的调度规则基于 Cron 表达式. 以下就来说一下Cron表达式的规则及使用方法 ...
- linux中Cron定时任务系统命令详解
分类:Linux VPS教程 作者:阿川 发布时间:October 13, 2011 有很多同学在购买VPS之后,需要用到计划任务.但是又对计划任务不太了解,所以.今天我们的帮助中心主要是给大家提供一 ...
- Unix/Linux中Cron的用法
cron是unix或者linux下用来定时任务的命令,大致的用法如下: 1.服务的启动和关闭 /sbin/service crond start //启动服务 /sbin/service cr ...
- CronTrigger中cron表达式使用
1.定时任务,当执行是具体时间的时候,不会立即执行,而是到指定时间执行. 2.实现Job接口时候,类中要有无参的public构造方法. 3.表达式中共用七个字段,按顺序是秒.分.时.日.月.周.年,默 ...
- linux中cron用法
http://blog.chinaunix.net/uid-677314-id-83387.html
- Quartz 和 springboot schedule中的cron表达式关于星期(周几)的不同表示
一.Quartz中cron 表达式分析: quartz 官方源码(org.quartz.CronExpression)解释: Cron expressions are comprised of 6 r ...
- Spring Boot 2.4 新特性,全新的Cron表达式处理机制
说起 cron 表达式大家一定不陌生,我们常用来作为定时任务执行策略规则. 在 Spring Boot 框架中 cron 表达式主要配合 @Scheduled 注解在应用程序中使用. 在 Spring ...
- Linux 中的定时处理 cron服务
cron服务 在LINUX中,周期执行的任务一般由cron这个守护进程来处理 当安装完操作系统后默认会安装此服务工具并且会自动启动crond,该进程会每分钟定期检查是否有要执行的任务,若有则执行. c ...
- Quartz中时间参数说明 即Cron表达式
Cron表达式 Quartz使用类似于Linux下的Cron表达式定义时间规则,Cron表达式由6或7个由空格分隔的时间字段组成,如表1所示: 表1 Cron表达式时间字段 位置 时间域名 允许值 允 ...
- SpringMVC中使用Cron表达式的定时器
SpringMVC中使用Cron表达式的定时器 cron(定时策略)简要说明 顺序: 秒 分 时 日 月 星期 年份 (7个参数,空格隔开各个参数,年份非必须参数) 通配符: , 如果分钟位置为* 1 ...
随机推荐
- Oracle 不同字符集复合索引长度验证
Oracle 不同字符集复合索引长度验证 背景 前段时间同事找到一个参数, 可以解决Oracle的char和byte 模式存储超长的问题. 很大程度上解决了研发修改SQL的工作量. 但是发现在某些字符 ...
- [转帖]JVM相关 - StackOverflowError 与 OutOfMemoryError
https://zhuanlan.zhihu.com/p/265039643 7 人赞同了该文章 本文基于 Java 15 StackOverflowError 与 OutOfMemoryErro ...
- [转帖]History of Unicode Release and Publication Dates
www.unicode.org For ease of reference, this page collects together information about the dates for v ...
- [转帖]使用 TiUP 扩容缩容 TiDB 集群
https://docs.pingcap.com/zh/tidb/stable/scale-tidb-using-tiup TiDB 集群可以在不中断线上服务的情况下进行扩容和缩容. 本文介绍如何使用 ...
- [转帖]修改jmeter内存配置(win&mac&linux)
目录 一.背景: 二.win环境下修改jmeter内存 三.mac&linux环境下修改jmeter内存 四.验证内存是否修改成功 一.背景: 在进行大数据.高并发压测的过程性,有时会遇上JM ...
- [转帖]ssd/san/sas/磁盘/光纤/RAID性能比较
https://plantegg.github.io/2022/01/25/ssd_san%E5%92%8Csas%E7%A3%81%E7%9B%98%E6%80%A7%E8%83%BD%E6%AF% ...
- 【转帖】linux 调优篇 :硬件调优(BIOS配置)* 壹
一. 设置内存刷新频率为Auto二. 开启NUMA三. 设置Stream Write Mode四. 开启CPU预取配置五. 开启SRIOV六. 开启SMMU 通过在BIOS中设置一些高级选项,可以有效 ...
- [转帖]Linux性能调优之内存负载调优的一些笔记
https://zhuanlan.zhihu.com/p/548770928 写在前面 整理一些Linux内存调优的笔记,分享给小伙伴 博文没有涉及的Demo,理论方法偏多,可以用作内存调优入门 博文 ...
- 去除 i 标签的倾斜样式;如何引入本地的阿里字体图标
去除 i 标签的倾斜样式 i{ font-style:normal; } 如何引入本地的阿里字体图标 将代码下载下来 当然你将下载下载来的资源有用的放在静态资源中 然后在 main.js 引入: ma ...
- (数据科学学习手札122)Python+Dash快速web应用开发——内网穿透篇
由我开源的先进Dash组件库feffery-antd-components正处于早期测试版本阶段,欢迎前往官网http://fac.feffery.tech/了解更多 1 简介 这是我的系列教程Pyt ...