Tomsk Sysadmins Forum

Windows => Разное => Topic started by: kuguar on June 04, 2008, 11:25:49

Title: taskkil и его применение
Post by: kuguar on June 04, 2008, 11:25:49
подобная тема уже была скорей всего.
есть приложение , ОСЬ Win2k3, которое периодически в часы активности крешится. поиск по ивентам ничего не дал. исходников и возможности чтото переработать тоже нет. но, я решил просто приложение горхать по taskkill. но ...
[div class=\'codetop\']CODE[div class=\'codemain\' style=\'height:200px;white-space:pre;overflow:auto\']taskkill /f /IM Server.exe >>log.txt
работает на ура. оно убивает приложение в любом состоянии - зависло - не зависло - пофигу. а хотел бы грохать именно в случае зависания. хелп по тасккилу советует делать так
[div class=\'codetop\']CODE[div class=\'codemain\' style=\'height:200px;white-space:pre;overflow:auto\']Фильтры:
    Имя фильтра   Допустимые операторы           Допустимые значения
    -----------   --------------------           -------------------
    STATUS        eq, ne                    RUNNING | NOT RESPONDING
    IMAGENAME     eq, ne                    Имя образа
    PID           eq, ne, gt, lt, ge, le    Значение PID
    SESSION       eq, ne, gt, lt, ge, le    Номер сессии
    CPUTIME       eq, ne, gt, lt, ge, le    Время CPU в формате
                                            hh:mm:ss.
                                            hh - часы,
                                            mm - минуты, ss - секунды
    MEMUSAGE      eq, ne, gt, lt, ge, le    Использование памяти в КБ
    USERNAME      eq, ne                    Имя пользователя в формате
                                            [<домен>\]<пользователь>
    MODULES       eq, ne                    Имя DLL
    SERVICES      eq, ne                    Имя службы
    WINDOWTITLE   eq, ne                    Заголовок окна
почему то тасккил не воспринимает фильтр STATUS, хоть как я его писал - пишет "фильр не опознан" и все...
вопрос - как его заставить учитывать статус приложения...
Title: taskkil и его применение
Post by: Egor on June 04, 2008, 11:52:52
нужно писать в кавычках

taskkill /fi "STATUS eq NOT RESPONDING"
Title: taskkil и его применение
Post by: kuguar on June 04, 2008, 12:28:32
Quote from: Egor
нужно писать в кавычках

taskkill /fi "STATUS eq NOT RESPONDING"
этото понятно , но не помогает. фишка в том что мне грохать надо только определенное приложение. поэтому нужно еще юзать /IM Server.exe. Пробуем на приложении , когда даже оно работатает, ведь если taskkill /fi "STATUS eq RUNNING" /IM Server.exe - то должно прибится приложение нормально работающее.

[div class=\'codetop\']CODE[div class=\'codemain\' style=\'height:200px;white-space:pre;overflow:auto\']>taskkill /fi "STATUS eq RUNNING" /IM Server.exe

Информация: Задачи, отвечающие заданным критериям, отсутствуют.
Title: taskkil и его применение
Post by: .05 on June 04, 2008, 14:52:58
Вот проверил на win2k3 RUS sp2 подвесив нотпад

taskkill /f /fi "STATUS eq running" /im notepad.exe - действительно не работает

а вот
taskkill /f /fi "STATUS ne running" /im notepad.exe и
taskkill /f /fi "STATUS ne not responding" /im notepad.exe работает на ура (т.е. eq running!=ne not responding    а в Вашем случае: ne running),

но есть еще один момент

tasklist /fi "STATUS ne not responding" дает "фильр не опознан" и работать у меня отказывается, т.к похоже tasklist переводили промтом, а вот
tasklist /fi "Состояние ne not responding" - опять же работает на ура, хотя /? по этому поводу упорно умалчивает


И еще, позвольте полюбопытствовать, Вы команду на триггер в планировщике вешать хотите?
Title: taskkil и его применение
Post by: kuguar on June 04, 2008, 16:44:28
мда. вот на это я проверить забыл. признаюсь пытался поставлять вместо NOT RESPONDING - Не отвечает ну и вместо RUNNING - Выполняется. перебрал регистры... обязательно проверю в ближайшее время.
да, кмдшку зашедулю в стандартном планировщике.
Title: taskkil и его применение
Post by: Egor on June 04, 2008, 17:57:57
Да, я тоже проверил на W2k3 R2 RUS - не работает как дОлжно и taskkill, и tasklist.

Например, tasklist не опознаёт STATUS, ему нужно по-русски написать Состояние.

Если вывести список процессов на сервере, то их состояние выходит в виде русского текста "Работает" и т.д.

Taskkill не находит выполняющийся процесс ни с каким статусом по-английски, а по-русски не опознаёт фильтр. То есть, команда фильтрует по строке, а русские символы не воспринимает.

Quote
C:\Documents and Settings\root\Мои документы>taskkill /im cmd.exe /fi "status eq running"

Информация: Задачи, отвечающие заданным критериям, отсутствуют.

C:\Documents and Settings\root\Мои документы>taskkill /im cmd.exe /fi "status eq not responding"

Информация: Задачи, отвечающие заданным критериям, отсутствуют.

C:\Documents and Settings\root\Мои документы>taskkill /im cmd.exe /fi "status eq unknown"

Информация: Задачи, отвечающие заданным критериям, отсутствуют.
Title: taskkil и его применение
Post by: .05 on June 04, 2008, 18:56:55
Вы, кстати, это пишете к теме  http://sysadmin.tomsk.ru/index.php?showtop...amp;#entry20318 (http://sysadmin.tomsk.ru/index.php?showtopic=2999&st=0&p=20318&#entry20318) ?
Если да, то про планировщик я вот почему спросил, у Вас приложение ведь вываливается с записью в евент лог, можно организовать триггер в планировщике по этому событию. Т.е. происходит событие, триггер срабатывает, а дальше запускается Ваш батник с taskkill /f /im server.exe & Server.exe. Конечно, это при условии, что событие в евентлог попадает сразу же после падения приложения. Если да, то EVENTTRIGGERS /Create /? Вам в помощь

Title: taskkil и его применение
Post by: kuguar on June 05, 2008, 10:53:40
с этим EVENTTRIGGERS такая же песня как и с тасклист и тасккилл - в хелпе ключи указаный по русски - в примерах по английски.
практика показала что нужно делать по английски, то есть несмотря что в хелпе написано
[div class=\'codetop\']CODE[div class=\'codemain\' style=\'height:200px;white-space:pre;overflow:auto\'] /L <журнал>                  Журнал событий, для которого ведется
                              наблюдение. Допустимые типы:
                              "Приложения", "Система", "Безопасность",
                              "DNS-сервер" и "Каталог". По умолчанию
                              используется подстановочный знак "*".
все равно нужно писать "Приложение"="Application"
сейчас запустил триггер пока параллельно - буду глядеть как отрабатывает. если все ок - переделаю кмдшку чтобы срабатывало только в случае если приложение само из памяти не выгрузилось. в любом случае .05 - спасибо за тычок в нужном направлении!
кстати, тема вспомнена верно - но железо уже другое - уже старенькое - но серверное.
Title: taskkil и его применение
Post by: .05 on June 05, 2008, 11:41:21
Quote from: kuguar
с этим EVENTTRIGGERS такая же песня как и с тасклист и тасккилл - в хелпе ключи указаный по русски - в примерах по английски.
практика показала что нужно делать по английски, то есть несмотря что в хелпе написано
[div class=\'codetop\']CODE[div class=\'codemain\' style=\'height:200px;white-space:pre;overflow:auto\'] /L <журнал>                  Журнал событий, для которого ведется
                              наблюдение. Допустимые типы:
                              "Приложения", "Система", "Безопасность",
                              "DNS-сервер" и "Каталог". По умолчанию
                              используется подстановочный знак "*".
все равно нужно писать "Приложение"="Application"
сейчас запустил триггер пока параллельно - буду глядеть как отрабатывает. если все ок - переделаю кмдшку чтобы срабатывало только в случае если приложение само из памяти не выгрузилось. в любом случае .05 - спасибо за тычок в нужном направлении!
кстати, тема вспомнена верно - но железо уже другое - уже старенькое - но серверное.

А Вы попробуйте eventcreate и сразу узнаете отработает или нет.
Мда, интересно штоже курили переводчики....
Title: taskkil и его применение
Post by: kuguar on June 05, 2008, 20:58:35
триггер сделал - буду смотреть как отработает