как создать специальную задачу cron?

как создать специальную задачу cron?

Мне нужно создать задание cron для запуска программы Java каждые 40 минут на сервере Unix. Учитывая, что: 1) оно должно выполняться с 8:30 до 12:30 и с 14:00 до 18:00 с понедельника по пятницу 2) необходимо учитывать праздники.

Я много читал об этом и нашел это */30 8..13,14..19 * * 1..5 как ближайшее решение. Я хочу знать, может ли crontab делать то, что я хочу, и если нет, возможно ли исправить код Java или какой-либо другой код для проверки даты праздника. Спасибо за помощь

решение1

CRON не так уж и умен, вам либо придется иметь много похожих правил, либо написать что-то более специальное, чтобы сделать это за вас (но будьте осторожны, вы не хотите писать скрипт, который запускает предоставленные пользователем вещи от имени root, не проявив особой осторожности. Забудьте об этом, вы не хотите писать скрипт, который делает это полностью)

решение2

Как сказал Джеймс, cron на самом деле не так уж и умен: он хорош в том, чтобы «делать эти вещи в это время, снова и снова, пока я не скажу тебе остановиться», но он не будет следовать плавающим праздникам или приходить в восторг от «необычных» таймингов, таких как every 40 minutes(для этого требуется куча записей в crontab — по сути, вам нужно будет создавать одну для каждого запуска).

Вероятно, вам лучше всего будет подойти «настолько близко, насколько это практически осуществимо» с помощью cron (т. е. вашего правила выше, которое гласит «Запускать каждые полчаса по отметке ЧЧ:30» в пределах ограничений части 1), а затем заставить свой скрипт самостоятельно проверять исключения (праздники) и решать, следует ли ему продолжать работу.

решение3

Это может быть излишним для того, что вам нужно, но вы можете использовать Hudson для запуска заданий. Само по себе вы не получите возможность немедленно запускать задания, используя ваши правила синхронизации, но вы можете запускать задания удаленно любым количеством методов. Так что если вы можете написать скрипт для изменения содержимого веб-страницы или создания новых файлов или сделать вызов REST к Hudson или сделать git checkin всякий раз, когда вы хотите, чтобы задание выполнялось, то вам повезло. Вы также получаете лучшее журналирование, чем только cron, и легко получать оповещения, когда задание не выполняется (по электронной почте, jabber, irc, nabaztag...)

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

Связанный контент