2

我有一个 cron 表达式,和我之前工作过的表达式有些不同,特别是因为?操作符(我不知道为什么使用它)

以下是我一直称为标准格式的格式。但是我在这个标准格式之后给出的表达式不遵循这个结构。谁能帮我理解这种新格式。提前感谢您的帮助。

* * * * * command to be executed
- - - - -
| | | | |
| | | | ----- Day of week (0 - 7) (Sunday=0 or 7)
| | | ------- Month (1 - 12)
| | --------- Day of month (1 - 31)
| ----------- Hour (0 - 23)
------------- Minute (0 - 59)

表达 :

0  15 15 ? * 1-7
4

3 回答 3

3

这是个错误。

时间格式为cron5 列。你有 6 个。

如果我测试你的cronexpression

0  15 15 ? * 1-7 ls

crontab 显示:

crontab: installing new crontab
"/tmp/crontab.AzvS1Q":148: bad month
errors in crontab file, can't install.
Do you want to retry the same edit? 

此外,如果我用?里面的 5 列进行测试,我仍然会得到一个错误。

我的cron实施cronie 1.4.8-3archlinux. ?在我的旧生活中,我从未见过这种情况。

于 2012-10-11T15:47:56.557 回答
2

好的,我找到了解决方案,它实际上是使用 javaquartz scheduler 进行调度

这就是它如何在表达式中获取 6 个参数

我的表达:0 15 15 ? * 1-7

Seconds
Minutes
Hours
Day-of-Month
Month
Day-of-Week
Year (optional field)

'?'字符允许用于日期和星期几字段。它用于指定“无特定值”。当您需要在两个字段之一中指定某些内容而不在另一个字段中指定内容时,这很有用。请参阅下面的示例(和 CronTrigger JavaDoc)进行说明。

您可以使用它来验证您的 cron 表达式http://www.cronmaker.com/

于 2012-10-12T10:52:50.107 回答
1

除了它似乎有太多字符的事实之外,问号可以用来代替*通配符情况下的字符,用于将日期留空或将星期几留空。

于 2012-10-11T15:49:16.490 回答