一个永远不会执行的 cron 作业

有没有办法创建一个 cron 表达式来根本不运行作业?

我想用这个短语:

00011? 3099

... 它实际上可以完成3099年的工作,但是有没有更干净的方法呢?

95087 次浏览

Comment it out — put # sign in front of it. Very useful, especially if you're afraid you'll forget about your changes by the year 3099.

Another possibility is to make it execute dummy command, like true rm -rf /.

Opening your crontab file and deleting the entry would be the adequate way. Or you might as well simlink the executable that's called by the cronjob to an empty shell script.

Tell us more about your setup, then we'll see ...

I created a duplicate (click here to see) for your question, and agree with your initial proposal. After testing, it appears Quartz will never execute a cron expression with a year above 2300.

If you're still looking for something robust even in the far future, try https://stackoverflow.com/a/13938099/1601531, where I suggest the use of February 31st in crontab entries which are never intended to execute.

0 0 5 31 2 ?

I needed a valid cron schedule (? syntax not working in my system) which resolves real dates, but to be effectively "never". My current best solution was to pick the most recent leap year and see what day Feb 29th fell on. Feb 29 2016 was a Monday, so the next Monday Feb 29 is currently furthest away.

0 0 29 2 1 yields the next 5 triggers as:

02/29/2044 00:00:00Z
02/29/2072 00:00:00Z
02/29/2112 00:00:00Z
02/29/2140 00:00:00Z
02/29/2168 00:00:00Z

Not perfect but it'll do.

Pick a date in the past.

That'll never happen again. Unless it's groundhog day. Just don't pick groundhog day.