none
"Особенности" работы программы taskkill в Windows 2003 RRS feed

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

  • Имеем сервер Windows 2003 SE En SP2 (+latest updates).
    На нем крутится некоторые службы (сервер СУБД Firebird 1.5 classic with Guardian), служба запущенна от Local System (как и положено по дефолту). В списке процессов соотв. значатся guardian.exe и fb_inet_server.exe (во множестве по кол-ву подключений к БД+1)? процессы работают от SYSTEM.
    Сервер крутится в домене под Windows 2003 (сам сервер контроллером домена не является).

    По условию задачи необходимо по шедулеру остановить службу и прибить оставшиеся процессы fb_inet_server.exe (связано с устройством данной СУБД и эксплуатируемого у нас клиентского ПО, при потере связи клиентского процесса с БД).

    При попытке использования штатного taskkill из-под доменного, локального или любого другого администратора (запускаем как taskkill /FI "IMAGENAME eq fb_inet_server.exe" /F, хотя во всех других вариациях эффект одинаков) оный выдает запрос о вводе пользователем логина и пароля, после чего говорит что пароль или имя пользователя неправильные и отказывается прибивать процесс.

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

    Все происходит удаленно, через RDP.

    Изучили труд Марка Руссиновича (внутреннее устройство Windows), отработали хотфикс от MS (http://support.microsoft.com/kb/903889/en-us), но причины происходящего понять не можем...
    11 марта 2009 г. 7:47

Все ответы

  • попробуйте просто остановить данные службы.. процессы их завершатся.

    net stop "Имя службы 1"
    net stop "Имя службы 2"

    ....

    net start "Имя службы 2"
    net start "Имя службы 1"
    11 марта 2009 г. 7:53
  • В том то и дело, что при остановке служб остаются висеть клиентские процессы Firebird-a, так уж он устроен. Их и нужно убивать.
    Firebird 1.5 в режиме классик-сервера запускает две службы: guardian и fb_inet_server. Причем один процесс выделяется для обслуживания всех сетевых подключений, а вот остальные - работают непосредственно с БД, запускаются при новых клиентских подключениях. При остановке служб сервера они остаются висеть в памяти. К сожалению клиентское ПО написано таким образом, что иногда подвисает, в этом случае приходится прибивать его (на стороне клиента). Еще есть некоторые пользователи(менеджеры), которые могут вечером не вернуться из "поля" на работу и у них их ПО остается висеть в ПК. Таким образом вечером в памяти сервера остаются несколько процессов, которые нужно тупо прибивать.
    Для самой БД это полностью безопасно (проверено уже годами практики).

    Мне собственно не понятно чем запущенный из-под администратора taskkill отличается в работе от того же taskmgr...
    Почему последний может прибить процесс, а второй кричит что у пользователя нету прав (либо он неправ :-)).
    11 марта 2009 г. 8:23
  • У меня есть Firebird, и я их убиваю pskill -f
    Утилита авторства Руссиновича. :)

    MCSA 2000, MCSA 2003, MCTS
    11 марта 2009 г. 8:44
  • О... Совсем забыл о pstools... Попробуем, спасибо !
    11 марта 2009 г. 9:32