1

В Windows 7 я запланировал довольно много задач, выполняя различные задания cron на своих машинах.

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

Поэтому я вынужден убить зависшее задание и запустить его снова - и теперь оно может успешно выполняться!

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

В любом случае для меня, чтобы узнать причину?

2 ответа2

2

Я бы предложил начать с EventViewer, как будто это сбой, он должен быть зарегистрирован.

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

Удаленный как реализованный LPChip написал аналогично: Кроме того, в качестве общего обходного пути, в планировщике задач, вы можете заставить его выйти, если для его завершения требуется более 72 часов (я думаю, что это по умолчанию).Если вы знаете, что задача должна занять всего несколько минут, затем измените это значение на 30 минут (предоставьте себе много свободного места). Это не поможет вам решить эту проблему, но если вам нужно продолжать работу, этого может быть достаточно, пока вы продолжите отладку.

1

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

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

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

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .