У нас есть сервер 2012 года, на котором есть около 20 запланированных задач, которые используются для мониторинга. Мы создали сервер 2016 года, чтобы заменить его, и когда я перемещаю задачи на новый сервер, я столкнулся с проблемой. Большинство наших задач выполняется каждые несколько минут.
В Server 2012 мы бы запланировали запуск задачи в 12.00 текущего дня (то есть время в прошлом) и повторение каждые X минут. Задача начнется в следующее запланированное время. Отлично.
В Server 2016 расписания, которые начинались в прошлом, не выполняются. Поэтому нам пришлось запланировать его запуск в будущем. Это нормально, пока вы не перезагрузитесь. Теперь время запуска в прошлом, и он не будет работать. Он даже не регистрирует неудачный запуск. Столбец Next Run Time показывает, что он должен работать, но не работает.
Помимо создания двух триггеров, один из которых запускается в будущем, а другой - при перезагрузке (чего мы не хотим делать, поскольку некоторые задачи должны выполняться только в определенное время), есть ли лучший способ? Похоже, это ошибка. Версия 2012 года работала отлично.
Для этого есть обходной путь. Создайте одноразовое расписание, которое работает бессрочно. Это работает после перезапуска, как и следовало ожидать. Я знаю, что это не очень хорошо для «странных» расписаний, но отлично подходит для вещей, которые мы хотим запускать каждые 3 минуты или что-то еще.
К вашему сведению - я подтвердил в Microsoft через тикет поддержки, который я открыл вчера, что это ошибка. Служба поддержки подтвердила, что это внутренне классифицировано как ошибка, и в настоящее время разрабатывается патч. Мне была назначена дата выхода патча июль / август.
Это влияет как на Windows 10, так и на Server 2016. Мои тестовые системы были исправлены до вчерашнего накопительного обновления. Проблема не возникала в Server 2012 R2 и Windows 7.
РЕДАКТИРОВАТЬ - Возможно, по состоянию на август, но определенно в сентябре 2017 года, эта проблема исправлена в системах, на которых я ее тестировал.
Эта проблема влияет только на задачи с Repeat task every: ...
набор опций.
До сих пор у меня создалось впечатление, что trigger at X, then repeat every 10 minutes
это просто излишне сложный способ написать trigger at every xx:x0
в Планировщике заданий.
Судя по всему, это не так. Видимо, это означает именно то, что написано: задача запускается в X
а потом, и только тогда это повторяется. Ни начального триггера, ни повтора. Мне кажется, что нет простого способа расписать trigger at every xx:x0
в Планировщике заданий (или есть? Это может стать хорошим отдельным вопросом Serverfault.) Тот факт, что столбец «Время следующего выполнения» показывает что-то другое, не очень помогает.
Мы «решаем» эту проблему, планируя запуск задачи на 12:00. каждый день (вместо одного дня), а затем повторять каждый ...
минут на 1 день. Это означает, что если произойдет перезагрузка, в 12:00 задачи возобновятся. Это не идеально, но здесь приемлемый компромисс.
Я предполагаю, что вы могли бы снизить «время простоя задачи» до 1 часа, создав один триггер на каждый час, а затем повторяя задачу каждый раз. ...
минут на 1 час.
Удивительно, но похоже, что так было всегда (см. Первый комментарий на этот ответ), которого мы до сих пор не замечали. Согласно другим комментариям связанного ответа, канонический способ решить эту проблему - активировать Run task as soon as possible after a scheduled start is missed
вариант.
Так что да, это ошибка, но ошибка в столбце «Время следующего запуска», а не в реальном расписании.
1. Windows 2016 Server обязательно потребует следующие параметры в вашей работе:
Я отметил эти варианты на скриншоте
2. Добавьте дополнительный триггер. Такие как:
и т. д. в смысле: чтобы переместить задачу, чтобы начать в желаемое время
3. В некоторых задачах в Windows 2016 - реализован такой подход.