Запланированная задача Windows не завершается с кодом ошибки 0xc000013a


11

Я использую Windows Server 2003 и у меня запланированное задание, которое не может быть выполнено. Задача настроена на запуск командного сценария Windows (.cmd) в 15:00 каждый день. Сценарий запускает программу, которая извлекает некоторые данные из базы данных SQL Server и загружает эти данные на FTP-сервер.

Код ошибки, отображаемый в столбце «Последний результат» папки запланированных задач, - 0xc000013a. Быстрый поиск в Google приводит к этой странице поддержки Microsoft, которая гласит: Наиболее распространенный код ошибки «C» - «0xC000013A: приложение завершено в результате нажатия CTRL + C».

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

Я проверил элементарные вещи - запланированное задание включено, оно запускается каждый день и указывает на файл, который существует в допустимом месте. Интересно, что когда я запускаю эту задачу вручную (либо путем запуска сценария .cmd из командной строки, либо щелкнув правой кнопкой мыши задачу и нажав «Выполнить»), задача успешно завершается.

Что означает этот код ошибки, и как я могу запустить эту задачу, когда меня там нет, чтобы заставить ее?


Попробуйте добавить код завершения в конец сценария самостоятельно (например exit 0). Если это все еще терпит неудачу, это терпит неудачу само по себе. Если нет, то это был просто фиктивный код выхода, неверно истолкованный планировщиком задач.
bjoster

Ответы:


6

Устранение неполадок по расписанию сценариев:

  1. Если вы этого еще не сделали, проверьте файл журнала « Запланированные задачи» в графическом интерфейсе в разделе « Дополнительно» > « Просмотреть журнал» . Найдите в файле « ***», чтобы найти самые последние записи, и вы можете увидеть дополнительную информацию об ошибке.

  2. Определите файл журнала для захвата вывода и отправьте туда как стандартную ошибку, так и стандартную ошибку. Измените любое эхо ВЫКЛ на эхо ВКЛ, чтобы убедиться, что вы не подавляете никаких сообщений об ошибках.
    Например, если ваш скрипт вызывается, ftp.data.cmdтогда ваша запланированная задача может выглядеть так:

    cmd /c ftp.data.cmd >> ftp.data.log 2>&1

  3. Сценарий висит? Может быть, планировщик задач убивает скрипт (отсюда код ошибки CTRL + C) через определенный промежуток времени. Добавьте некоторые из них в стратегических точках в вашем scipt,

    echo %DATE% %TIME%

  4. Вы уверены, что учетная запись, в которой запущен скрипт, имеет разрешения / доступ ко всему в скрипте?

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

    schtasks /query /v /fo LIST /s YOURSERVER


4

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

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


2

Я понимаю, что это старая публикация, но она очень полезна при поиске решений и, возможно, то, что я нашел, может быть полезным. Я использовал WinSCP на Windows Server 2003 для загрузки на FTP-сервер и получил то же сообщение об ошибке, а файл SchedLgU.txt указал на нехватку времени в разделе «Остановить задачу, если она предоставлена:», хотя я и дал задачу много времени для загрузки.

Глядя в диспетчер задач, я мог видеть, что WinSCP.exe не очищается, и у меня были тонны процессов в списке, поэтому я создал командный файл (taskkill / f / im winscp.exe), чтобы убить любой открытый процесс, и я запустите этот пакетный файл перед WinSCP, и теперь он работает хорошо.


2

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

С параметром «Запускать только когда пользователь вошел в систему» ​​задача запускает командное окно, которое было закрыто по истечении времени сеанса удаленного рабочего стола. С параметром «Выполнить, вошел ли пользователь в систему или нет» окно не отображается во время выполнения задачи, поэтому выполнение не останавливается, когда заканчивается сеанс удаленного рабочего стола.


1

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


1

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


1

У меня была та же самая ошибка, и это было, потому что пакетный файл, который я выполнял, предлагал удалить некоторые файлы с помощью команды DEL. Поскольку нет пользователя, чтобы ответить «Да / Нет» для пакетной обработки, запланированная задача прекращается. Ниже приведено сообщение, которое я обнаружил в своем журнале запланированных задач: «задача была завершена. Это действие было инициировано либо администратором, либо службой планировщика задач (поскольку, например, компьютер теперь не находится в режиме ожидания»). Я рекомендую запустить задачу вручную из командной строки, чтобы увидеть, где она останавливается или запрашивается какое-либо взаимодействие с пользователем, исправьте ее, и ваша задача будет работать нормально.


1

Если вы пытаетесь запустить программу под управлением планировщика заданий, System.Environment.CurrentDirectory вернет C: \ Windows \ System32, НЕ там, где находится ваш исполняемый файл. Эта ошибка может быть ошибкой при отсутствии файла; Я пытался войти в подкаталог, и он не существует в дереве System32.


0

По моим сценариям это понятно. Это происходит потому, что у меня есть «пауза» в конце пакетного файла и запланированное задание ограничено 20 минутами. Когда пользователь присутствует, привет может видеть поток работы. Если пакетный файл не завершен запланированной задачей, через 20 мин. Это вызывает 0xc000013a, и это нормально.


0

У меня была та же проблема, и я исправил ее, изменив триггер с «При запуске системы» на «При входе в систему».


0

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

Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.