我有一个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
答案 0 :(得分:3)
这是一个错误。
cron
中的时间格式为5列。你有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-3
archlinux
。在这种情况下,我从未在旧生活中见过?
。
答案 1 :(得分:1)
除了它似乎有太多字符之外,可以使用问号来代替通配符情况的*
字符,以便将日期留空或者星期几空白。
答案 2 :(得分:1)
好的,我找到了解决方案,实际上是使用java quartz 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/