Почему Windows Task Scheduler породил бы несколько экземпляров той же задачи, которые сталкиваются друг с другом?

Проверьте Руководство Администратора Повышенной безопасности Oracle, Архитектуру Повышенной безопасности Oracle для довольно хорошего графического обзора.

2
задан 2 June 2011 в 22:10
4 ответа

Планировщик задач имеет опцию перезапуска задачи, если это думает, что первый запуск не был успешен. Если бы опция установлена, это была бы хорошая идея отключить его. Некоторое дальнейшее исследование что касается того, почему первый запуск возвращает неуспешное значение, должно следовать.

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

0
ответ дан 3 December 2019 в 11:04

В планировщике задач есть известная ошибка, из-за которой одна и та же задача время от времени запускается дважды. Это происходит, когда предыдущая запланированная задача завершается ровно тогда, когда должна начаться новая задача: планировщик затем запускает ту же задачу дважды.

Там есть исправление: http://support.microsoft.com/kb/2461249

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

3
ответ дан 3 December 2019 в 11:04

У меня было несколько таких задач, которые появлялись несколько раз почти в один и тот же момент. Другие этого не сделали. Я решил это так:

1) Зайдите в Свойства задачи

2) На вкладке Настройки убедитесь, что пункт внизу - "Если задача уже запущена, то применяется следующее правило:"

3) устанавливается в - «Не запускать новый экземпляр»

Наконец, он вел себя как хорошая маленькая задача и выполнялся только один чертов раз, когда я этого хотел. Хорошая задача. Вы получаете бисквит.

0
ответ дан 4 December 2019 в 16:57

Я столкнулся с этой проблемой в Windows Server 2012 R2: на машине размещена запланированная задача, которая должна запускаться каждые 15 минут и отвечает за перемещение файлов с SFTP-сервера.

Дублирование происходит уже некоторое время, и я только что смог найти обходной путь.

Я обернул свою запланированную задачу в команду PowerShell start-process и использовал мьютекс, чтобы обеспечить блокировку потока, гарантирующую, что может выполняться только один экземпляр моей задачи.

Вот как я достиг этого в коде.

# Start mutual exclusion
$Mutex = New-Object -TypeName System.Threading.Mutex -ArgumentList $false, "Global\**MyMutexName**"
$Mutex.WaitOne() | Out-Null

    ***..... Rest of my code here.....***

#Release the mutal exclusion
$Mutex.ReleaseMutex() | Out-Null

Я также обновил запланированное действие задачи, чтобы запустить мой сценарий powershell и передать аргумент -sta для запуска с включенным режимом sta.

Я вижу несколько экземпляров, порождаемых в истории планировщика задач, оба имеют разные идентификаторы корреляции, однако один из них не запускается, а другой успешно завершается.

Скриншот истории запланированных задач

Я очень надеюсь, что этот ответ поможет кому-то в будущем, так как я потратил много месяцев, пытаясь найти решение этой проблемы!

1
ответ дан 16 September 2021 в 12:37

Теги

Похожие вопросы