<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom"><channel><title>Crontab on 吾爱主机</title><link>https://blog.waihost.com/tags/crontab/</link><description>Recent content in Crontab on 吾爱主机</description><generator>Hugo -- gohugo.io</generator><language>zh-cn</language><lastBuildDate>Wed, 12 Mar 2025 11:26:34 +0800</lastBuildDate><atom:link href="https://blog.waihost.com/tags/crontab/index.xml" rel="self" type="application/rss+xml"/><item><title>如何正确的编写cron表达式</title><link>https://blog.waihost.com/posts/cron-expression-guide/</link><pubDate>Wed, 12 Mar 2025 11:26:34 +0800</pubDate><guid>https://blog.waihost.com/posts/cron-expression-guide/</guid><description>&lt;img src="https://blog.waihost.com/images/covers/cron-expression-guide.svg" alt="Featured image of post 如何正确的编写cron表达式" /&gt;&lt;p&gt;正确编写cron表达式需要遵循特定的结构和规则。以下是分步指南：&lt;/p&gt;
&lt;h3 id="1-确定cron实现环境"&gt;&lt;a href="#1-%e7%a1%ae%e5%ae%9acron%e5%ae%9e%e7%8e%b0%e7%8e%af%e5%a2%83" class="header-anchor"&gt;&lt;/a&gt;&lt;strong&gt;1. 确定cron实现环境&lt;/strong&gt;
&lt;/h3&gt;&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;标准cron（如Linux crontab）&lt;/strong&gt;：5个字段，格式为 &lt;code&gt;分钟 小时 日期 月份 星期&lt;/code&gt;。&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;扩展实现（如Quartz、Spring）&lt;/strong&gt;：可能包含6个字段（&lt;code&gt;秒 分钟 小时 日期 月份 星期&lt;/code&gt;）。&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id="2-字段顺序与取值范围"&gt;&lt;a href="#2-%e5%ad%97%e6%ae%b5%e9%a1%ba%e5%ba%8f%e4%b8%8e%e5%8f%96%e5%80%bc%e8%8c%83%e5%9b%b4" class="header-anchor"&gt;&lt;/a&gt;&lt;strong&gt;2. 字段顺序与取值范围&lt;/strong&gt;
&lt;/h3&gt;&lt;table&gt;
	&lt;thead&gt;
			&lt;tr&gt;
					&lt;th&gt;字段&lt;/th&gt;
					&lt;th&gt;取值范围&lt;/th&gt;
					&lt;th&gt;支持的特殊字符&lt;/th&gt;
			&lt;/tr&gt;
	&lt;/thead&gt;
	&lt;tbody&gt;
			&lt;tr&gt;
					&lt;td&gt;分钟&lt;/td&gt;
					&lt;td&gt;0-59&lt;/td&gt;
					&lt;td&gt;&lt;code&gt;* , - /&lt;/code&gt;&lt;/td&gt;
			&lt;/tr&gt;
			&lt;tr&gt;
					&lt;td&gt;小时&lt;/td&gt;
					&lt;td&gt;0-23&lt;/td&gt;
					&lt;td&gt;&lt;code&gt;* , - /&lt;/code&gt;&lt;/td&gt;
			&lt;/tr&gt;
			&lt;tr&gt;
					&lt;td&gt;日期&lt;/td&gt;
					&lt;td&gt;1-31&lt;/td&gt;
					&lt;td&gt;&lt;code&gt;* , - / ? L W&lt;/code&gt;（部分系统支持）&lt;/td&gt;
			&lt;/tr&gt;
			&lt;tr&gt;
					&lt;td&gt;月份&lt;/td&gt;
					&lt;td&gt;1-12 或 JAN-DEC&lt;/td&gt;
					&lt;td&gt;&lt;code&gt;* , - /&lt;/code&gt;&lt;/td&gt;
			&lt;/tr&gt;
			&lt;tr&gt;
					&lt;td&gt;星期&lt;/td&gt;
					&lt;td&gt;0-7（0和7均为周日，1=周一）&lt;/td&gt;
					&lt;td&gt;&lt;code&gt;* , - / ? L #&lt;/code&gt;（部分系统支持）&lt;/td&gt;
			&lt;/tr&gt;
			&lt;tr&gt;
					&lt;td&gt;秒（扩展）&lt;/td&gt;
					&lt;td&gt;0-59&lt;/td&gt;
					&lt;td&gt;&lt;code&gt;* , - /&lt;/code&gt;&lt;/td&gt;
			&lt;/tr&gt;
	&lt;/tbody&gt;
&lt;/table&gt;
&lt;h3 id="3-特殊字符用法"&gt;&lt;a href="#3-%e7%89%b9%e6%ae%8a%e5%ad%97%e7%ac%a6%e7%94%a8%e6%b3%95" class="header-anchor"&gt;&lt;/a&gt;&lt;strong&gt;3. 特殊字符用法&lt;/strong&gt;
&lt;/h3&gt;&lt;ul&gt;
&lt;li&gt;&lt;code&gt;*&lt;/code&gt;：所有值（如每分钟）。&lt;/li&gt;
&lt;li&gt;&lt;code&gt;,&lt;/code&gt;：分隔多个值（如 &lt;code&gt;1,3,5&lt;/code&gt; 表示1、3、5）。&lt;/li&gt;
&lt;li&gt;&lt;code&gt;-&lt;/code&gt;：定义范围（如 &lt;code&gt;10-20&lt;/code&gt; 表示10到20）。&lt;/li&gt;
&lt;li&gt;&lt;code&gt;/&lt;/code&gt;：步长（如 &lt;code&gt;*/15&lt;/code&gt; 表示每15分钟）。&lt;/li&gt;
&lt;li&gt;&lt;code&gt;?&lt;/code&gt;：不指定值（用于日期或星期字段，避免冲突）。&lt;/li&gt;
&lt;li&gt;&lt;code&gt;L&lt;/code&gt;：最后一天（如 &lt;code&gt;L&lt;/code&gt; 在日期字段表示月末）。&lt;/li&gt;
&lt;li&gt;&lt;code&gt;W&lt;/code&gt;：最近工作日（如 &lt;code&gt;15W&lt;/code&gt; 表示最接近15号的工作日）。&lt;/li&gt;
&lt;li&gt;&lt;code&gt;#&lt;/code&gt;：第几个星期几（如 &lt;code&gt;1#3&lt;/code&gt; 表示第三个周一，仅部分系统支持）。&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id="4-编写规则"&gt;&lt;a href="#4-%e7%bc%96%e5%86%99%e8%a7%84%e5%88%99" class="header-anchor"&gt;&lt;/a&gt;&lt;strong&gt;4. 编写规则&lt;/strong&gt;
&lt;/h3&gt;&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;避免冲突&lt;/strong&gt;：日期和星期字段通常不同时指定具体值，用 &lt;code&gt;?&lt;/code&gt; 忽略其中一个。&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;转义字符&lt;/strong&gt;：部分系统需转义特殊字符（如 &lt;code&gt;\%&lt;/code&gt;）。&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;大小写&lt;/strong&gt;：月份/星期缩写通常不区分大小写（如 &lt;code&gt;MON&lt;/code&gt; 或 &lt;code&gt;mon&lt;/code&gt;）。&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id="5-常用示例"&gt;&lt;a href="#5-%e5%b8%b8%e7%94%a8%e7%a4%ba%e4%be%8b" class="header-anchor"&gt;&lt;/a&gt;&lt;strong&gt;5. 常用示例&lt;/strong&gt;
&lt;/h3&gt;&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;每5分钟执行一次&lt;/strong&gt;：&lt;code&gt;*/5 * * * *&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;每天中午12点&lt;/strong&gt;：&lt;code&gt;0 12 * * *&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;每周一上午9点&lt;/strong&gt;：&lt;code&gt;0 9 * * 1&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;每月1号0点&lt;/strong&gt;：&lt;code&gt;0 0 1 * *&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;工作日（周一至周五）上午9点&lt;/strong&gt;：&lt;code&gt;0 9 * * 1-5&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;每季度最后一天的午夜&lt;/strong&gt;（Quartz）：&lt;code&gt;0 0 0 L 3,6,9,12 ?&lt;/code&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id="6-验证工具"&gt;&lt;a href="#6-%e9%aa%8c%e8%af%81%e5%b7%a5%e5%85%b7" class="header-anchor"&gt;&lt;/a&gt;&lt;strong&gt;6. 验证工具&lt;/strong&gt;
&lt;/h3&gt;&lt;ul&gt;
&lt;li&gt;使用在线工具检查表达式（如 &lt;a class="link" href="https://crontab.guru/" target="_blank" rel="noopener"
 &gt;Crontab Guru&lt;/a&gt; 或 &lt;a class="link" href="https://www.freeformatter.com/cron-expression-generator-quartz.html" target="_blank" rel="noopener"
 &gt;Cron Expression Generator&lt;/a&gt;）。&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id="7-常见错误"&gt;&lt;a href="#7-%e5%b8%b8%e8%a7%81%e9%94%99%e8%af%af" class="header-anchor"&gt;&lt;/a&gt;&lt;strong&gt;7. 常见错误&lt;/strong&gt;
&lt;/h3&gt;&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;字段顺序错误&lt;/strong&gt;：如混淆分钟和小时。&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;超出取值范围&lt;/strong&gt;：如小时设为24。&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;不支持的字符&lt;/strong&gt;：在标准cron中使用 &lt;code&gt;?&lt;/code&gt; 或 &lt;code&gt;L&lt;/code&gt;（需确认系统支持）。&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id="示例解析"&gt;&lt;a href="#%e7%a4%ba%e4%be%8b%e8%a7%a3%e6%9e%90" class="header-anchor"&gt;&lt;/a&gt;&lt;strong&gt;示例解析&lt;/strong&gt;
&lt;/h3&gt;&lt;ul&gt;
&lt;li&gt;&lt;code&gt;0 0/30 9-17 ? * MON-FRI&lt;/code&gt;（Quartz）&lt;br&gt;
含义：工作日9:00到17:30之间，每30分钟执行一次（含9:00和17:30）。&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;通过明确环境、遵循字段规则、合理使用特殊字符，即可编写准确的cron表达式。&lt;/p&gt;</description></item></channel></rss>