Показать все время, когда выполняется задание cron

Хорошо, я могу определить задание cron в 17:30.

30 17 * * * /path/to/command

или каждые 15 минут

*/15 * * * * /path/to/command

или в 5 прошлом, 34 прошлом и 41 прошлом

5,34,41 * * * * /path/to/command

или на

*/14 3,7 */6 2-11 1,7 /path/to/command

что каждые 14 минут в 3 часа и 7 часов в каждый день, который делится на 6, не в январе и не в декабре и или или если это понедельник или воскресенье? А может быть, это незаконно, потому что воскресенье было, 0а не было 7?

Я ищу программное обеспечение, которое

  • принимает строку crontab в качестве входных данных
  • проверяет, действителен он или нет
  • если допустимо, с этого момента перечисляет время следующего выполнения
  • ограничено определяемой пользователем суммой

Например

program -n 10 30 17 * * *

производит 10 строк вывода (при условии, что сегодня 2015-10-22)

2015-10-23 17:30
2015-10-24 17:30
2015-10-25 17:30
2015-10-26 17:30
2015-10-27 17:30
2015-10-28 17:30
2015-10-29 17:30
2015-10-30 17:30
2015-10-31 17:30
2015-11-01 17:30

Другие требования:

  • бесплатно / с открытым исходным кодом, думаю, я бы даже заплатил за это 20 долларов
  • любая ОС (Debian/Ubuntu подойдут, но подойдет и Windows)

Ответы (2)

Еще один вариант для изучения, если вы немного разбираетесь в программировании, — это использовать библиотеку java cron-utils , о которой можно сказать следующее из github:

cron-utils стремится предоставить утилиты, которые можно использовать во всех библиотеках Java cron, а также обеспечить взаимодействие с библиотеками времени, такими как JodaTime.

Текущая версия позволяет

  • выражать выражения cron как объекты
  • анализировать выражения
  • описать и подтвердить их
  • найти последнее и следующее время выполнения

Среди прочего, у него есть метод, nextExecutionTime()который вычисляет, когда в следующий раз будет запущено задание cron. Этот метод определен в файле model/time/ExecutionTime.java .

http://cron-parser.com/ — главная веб-страница этой библиотеки, и список функций на этой странице выглядит следующим образом:

Функции

  • Создавайте произвольные выражения cron: вы можете определить свой собственный формат cron! Поддерживаемые поля: секунда, минута, час, день месяца, месяц, день недели, год.
  • Вы можете пометить последнее поле как необязательное!
  • Поддерживает все специальные символы cron: * / , -
    • Также поддерживаются нестандартные символы L, W, #!
    • Вопросительный знак (?) в настоящее время заменен на звездочку (*). Расширенная поддержка будет предоставлена ​​в будущем.
  • Печатайте в удобочитаемом для человека формате (до сих пор на английском, голландском, французском, итальянском, португальском и испанском языках...).
  • Процесс синтаксического анализа и описания разделены: проанализируйте один раз и работайте с результатом!
  • Проверить соответствие строковых выражений cron определению cron с помощью CronValidator.
  • Преобразуйте cron между разными определениями cron: если вам нужно перенести выражения, CronMapper может вам помочь!

Существует веб- переводчик выражений cron. Вы можете использовать javascript на этой странице translation.js, немного изменить его и использовать по своему усмотрению.

Кроме того, здесь уже есть аналогичный вопрос о переполнении стека . Мне не нужно копировать все это здесь, так как оно находится в той же сети.

Надеюсь, поможет.

Переводчик уже выходит из строя на */15 * * * *.
Косвенно связанный cronwtf.github.io не уточняет, являются ли дни недели и или или .
Для cronwtf.github.io я также не согласен с * * * 2-11 *возвратом с марта по декабрь. unix.com/man-page/linux/5/crontab говорит, что числа от 1 до 12, а не от 0 до 11.