none
Проблема с Scheduled Task, зависание заданий... RRS feed

  • Общие обсуждения

  • Доброго времени суток!

    Что есть:
    Сервер с ОС Win 2003 Standard Edition SP2.
    Антивирус: Антивирус Касперского 6.0 для Windows Server Enterprise Edition (поставлен для защиты от Win32.Sality.aa, кто не боролся с этой дрянью, тот не поймёт).
    На нем есть задача, согласно которой каждую минуту запускается батничек, который с FTP-сервера скачивает файлы для 1С-Бухгалтерии (синхронизация, автообмен баз между филиалами, регионами).

    Что происходит:
    Перестает обновляться база 1С. Заходим на сервер, проверяем, что с автообменом. Видим, что задание запускать батничек в столбце "Status" имеет значение "Running", но при этом ни чего не выполняется. Позже выяснилось, что происходит все в точности так - Запускается батничек, появляется черное досовское окошечко, оно отрабатывает, закрывается, а статус "Running" не исчезает. После этого задание уже не запускается.
    При этом помогает только перезагрузка компа.

    Что я хочу знать:
    1. Почему это происходит (может происходить)?
    2. Как можно сбросить задачу? (В диспетчере задач нет этой задачи).

    P.S. В логах об этом записей нет.
    13 апреля 2009 г. 6:00

Все ответы

  • Антивирус поставлен, конечно, для защиты не только от Win32.Sality.aa. Этот зловред стал причиной покупки антивируса. На тот момент зараженные им файлы умели лечить только Dr. Web И KASPERSKY, остальные (известные мне антивирусы) тупо удаляли зараженные файлы. А попробуйте дать команду на удаление, когда заражены ключевые EXE-шники системы.

    13 апреля 2009 г. 6:04
  • В первую очередь выясните, что происходит в вашим командным файлом. Запустите его сначала в вашей пользовательской сессии и посмотрите, что он выводит на экран. Если все нормально, то придется переписать bat-файл, чтобы он писал сообщения и ошибки в лог-файл. Для этого добавьте в каждую строку командного файла конструкцию вида (на примере команды dir)

    dir c:\  1>>c:\logs\log.txt 2>>&1
    13 апреля 2009 г. 6:32
    Модератор
  • Файл запускается на любой машине, где есть возможность выхода в WAN по протоколу ftp. Разумеется придется подкорректировать пути в батничке.
    И на том серваке он запускается. Что-то происходит с самим заданием. Сами понимаете, что не каждый сервак можно перезагружать в рабочее время. Поэтому мне приходится создавать в Scheduled Task еще одно задание, которое запускает этот батничек аналогично первому, а ночью удаленно давать команду RESTART.
    Ну перепишу я батник для логов и что? Он мне напишет, что все "ОК". Он выполнится нормально в любом случае. Что-то происходит со статусом задания, оно ни как не может сбросить состояние "Running".
    Я очень сомневаюсь, что это нам поможет.


    13 апреля 2009 г. 10:54
  • Хорошо, тогда поместите здесь ответы на следующие вопросы:

    - командная строка, запускаемая в качестве назначенного задания;
    - содержимое командного файла (максимально полное, замените только пароли, если есть);
    - содержимое лог-файла Scheduled Tasks (последние строки, относящиеся к запуску нескольких последних заданий);
    - под какой учетной записью запускается задание (административная/неадминистративная/System, совпадает/не совпадает с именем залогинившегося пользователя);
    - добавьте другое задание, не имеющее отношения к данной задаче (например, копирование файлов с сетевой папки); выполняется ли оно нормально, не зависая в состоянии Running? 
    13 апреля 2009 г. 11:23
    Модератор
  • Понял.
    Как подготовлю - выложу.
    13 апреля 2009 г. 12:35
  • 1.

    BAT-файл, который запускается, содержить в себе следующие строки:

    ########################
    ftps -s:spb-get-20zip.txt -a
    ftps -s:spb-put-21zip.txt -a

    ftps -s:spb-get-30zip.txt -a
    ftps -s:spb-put-31zip.txt -a

    ftps -s:spb-get-40zip.txt -a
    ftps -s:spb-put-41zip.txt -a

    ftps -s:spb-get-50zip.txt -a
    ftps -s:spb-put-51zip.txt -a

    ............
    ............

    ftps -s:spb-get-X0zip.txt -a
    ftps -s:spb-put-X1zip.txt -a
    ########################

    Файлы spb-get-X0zip.txt содержит строки:

    ########################
    open ftp.saturn.net
    username
    password
    REN
    20.zip
    20.zip.down
    GET
    20.zip.down
    Q:\exchange\exchange\SPB\X0.zip
    del 20.zip.down
    by
    ########################

    Файлы spb-put-X1zip.txt содержит строки:

    ########################
    open ftp.saturn.net
    username
    password
    PUT
    Q:\exchange\exchange\SPB\X1.zip
    21.zip
    by
    ########################

    Это то, что выполняется батником.

    2.

    Вход в систему произведен под доменным администратором с ПОЛНЫМИ правами. Задание запускается под этой же учетной записью.


    3.

    Простите за мою серость, но я немного не понял, что вы имеете ввиду под "командная строка, запускаемая в качестве назначенного задания;? Нельзя ли попросить вас разжевать для меня."

    Остальное позже.





    13 апреля 2009 г. 12:54
  • Пока не могу предложиь решение. Посмотрите в Диспетчере задач, какие процессы остаются запущенными после отработки назначенного задания, когда все выполнено, но задача остается в состоянии Running. Программа ftps - это консольное приложение, как и утилита ftp? Проверьте, что ни один из процессов ftps не остается запущенным. Как workaround, если нужно быстрое решение, могу предложить перейти на более гибко настраиваемый планировщик, например nncron.

    13 апреля 2009 г. 13:40
    Модератор
  • Попробуйте добавить к ftps ключ -quiterror
    Кстати если я не ошибаюсь - любая ошибка в логине/пароле приведет к зависанию ftps в ожидании ввода.
    Еще может быть что у учетной записи из под которой запускается сценарий нет доступа к папке.
    Впрочем гадать можно долго, я бы рекомендовал вам последовать совету Олега, и добавить к сценарию вывод отладочной информации. В большинстве случаев помогает именно это.

    После "зависания" (я уверен что просто не завершился какой то процесс) задания, попробуйте посмотреть дерево процессов, например с помощью process explorer (http://technet.microsoft.com/en-us/sysinternals/bb896653.aspx) Я уверен как назывался менеджер планировщика в win2003, но вроде taskeng.exe.
    Предполагаю что вы увидите дерево, вроде:
    taskeng.exe
        cmd.exe
            ftps.exe


    AKA Xaegr, MCSE: Security, Messaging; MCITP: Server\Enterprise Administrator; Блог: http://xaegr.wordpress.com
    13 апреля 2009 г. 18:36
    Модератор
  • Предполагаю что вы увидите дерево, вроде:
    taskeng.exe
        cmd.exe
            ftps.exe


    AKA Xaegr, MCSE: Security, Messaging; MCITP: Server\Enterprise Administrator; Блог: http://xaegr.wordpress.com
    Я увидел так:
    svchost.exe
         cmd.exe
              ftps.exe

    14 апреля 2009 г. 3:43
  • techdep , попробуйте запланировать задание на выполнение в интерактивном режиме.. например так:
    at 10:05 /interactive "Путь к файлу\файл.bat"

    и посмотрите в каком месте затык :)
    mcp, mcdba, mcsa, mcse, ccna
    14 апреля 2009 г. 4:06
  • techdep , попробуйте запустить задание в интерактивном режиме.. например так:
    at 10:05 /interactive "Путь к файлу\файл.bat"

    и посмотрите в каком месте затык :)
    mcp, mcdba, mcsa, mcse,
    Понимаете, дело в том, что зависание происходит не каждый раз при запуске, а случайным образом. Оно может работать без проблем день, два, три, неделю. А может и пол дня не проработать, но это было редко. Так, что хоть в интерактивном, хоть в каком ни запускай - один итог.
    14 апреля 2009 г. 4:11
  • а если попробовать прибивать задание скажем по прошествию n-минут после начала выполнения.. на случай если оно зависнет.. (я правда не уверен в том будет ли он останавливать порожденные дочерние процессы)

    следующий запуск будет возможно удачным..

    а так если хотите понять в чем причина, то конечноже лучше воспользоваться способами описанными выше.. тоесть вести логи выполнения..
    mcp, mcdba, mcsa, mcse, ccna
    14 апреля 2009 г. 4:59
  • Я увидел так:
    svchost.exe
         cmd.exe
              ftps.exe

    Иными словами, по какой-то причине не выгружается ftps.exe

    Я всегда в случае проблем с назначенными заданиями делаю и смотрю логи. Если у вас задание иногда отрабатывается, иногда нет (вы, кстати, только сейчас об этом написали), то выдвину два предположения. Либо проблема с подключением сетевого диска, либо с загрузкой профиля. И повторюсь, если не принципиально, каким планировщиком пользоваться, то установите nncron. Он имеет большие возможности по настройке и с его помощью мне удавалось запускать назначенные задания, которые не работали под управлением стандартного планировщика Windows XP/2003.
    14 апреля 2009 г. 5:47
    Модератор
  • Я, кажется, неверно объяснил. Я это вижу при выполнении задания. Сейчас жду очередного зависания и буду смотреть, что происходит с процессами.
    14 апреля 2009 г. 6:38
  • а если попробовать прибивать задание скажем по прошествию n-минут после начала выполнения.. на случай если оно зависнет.. (я правда не уверен в том будет ли он останавливать порожденные дочерние процессы)
    Задание выполняется каждую минуту. Выполняется оно в среднем секунд за 30. Если батничек отработал, а в статусе написано "Running", то прибить, остановить задание командой "End Task" невозможно. Теперь, с помощью "process explorer", буду смотреть, что не завершилось.
    14 апреля 2009 г. 6:41
  • Если у вас задание иногда отрабатывается, иногда нет (вы, кстати, только сейчас об этом написали), то выдвину два предположения. Либо проблема с подключением сетевого диска, либо с загрузкой профиля. И повторюсь, если не принципиально, каким планировщиком пользоваться, то установите nncron. Он имеет большие возможности по настройке и с его помощью мне удавалось запускать назначенные задания, которые не работали под управлением стандартного планировщика Windows XP/2003.
    Немного уточню, задание отрабатывается полноценно (в плане результата работы батника), просто, когда окно батника закрывается, статус "Running" не скидывается. Но батник отработал корректно (это видно по результатам его работы)!!!!
    Я nncron уже тестирую, спасибо.

    14 апреля 2009 г. 6:47
  • ждем новых подробностей %)
    mcp, mcdba, mcsa, mcse, ccna
    14 апреля 2009 г. 7:34