PDA

Показать полную графическую версию : Отслеживаем процесс


vippy
29-02-2004, 10:35
Добрый день!

Задача такая:

стоит win 2k server. На нём запущены игровые сервера (пока только CS и NFS Underground).

Задача:
Всем известно, что CS игра отличная но глюкавая ... Вот и понадобилось мне написать прогу:
1. Отслеживаем наличие процесса в системе
2. Если он присутсвует проверить не "повис" ли он
2.1 Если повис - убиваем
3. Если отсутсвует или мы его убили - запустить с параметрами.

Всё это делать надо кадые 5-10 минут. *
А так как я - не программер - то сами понимаете - в полном ступоре )) *

Хелп ми )) Отблагодарю чем смогу ))

Исправлено: vippy, 14:36 29-02-2004

Prisoner
29-02-2004, 22:11
Программу написать не сложно, единственым местом где будет финт ушами - определение зависания процесса, а в остальном дел на пару часов. Однако помятуя ритуал тестирования (альфа, бета, гамма, патчи...) рекомендую воспользоваться планировщиком nnCron у которого есть все, что вам необходимо. Для стран xUSSR программа бесплатна (точнее в readme указан метод активации), есть помощь на русском. Смотреть сюда (http://nncron.ru/index_ru.shtml) .

vippy
01-03-2004, 06:17
Споров нет, интересно. Но вот одно НО, не увидел в списке возможностей отслеживания присутсвия процесса в системе или его "зависания" :(

Prisoner
01-03-2004, 06:37
Существование процесса.
PROC-EXIST: "proc_pattern"

Возвращает флаг TRUE (-1), если процесс, подпадающий под маску существует. В качестве аргумента к слову PROC-EXIST: обычно используется имя исполняемого файла, который запускает процесс.

Пример:

Rule: PROC-EXIST: "winword.exe"

На счет зависания облом. Дело в том, что я к примеру, не знаю как определить зависание процесса кроме как методом пинга - посылки ряда сообщений к процессу и оценке количества не возвращенных (100%).

vippy
03-03-2004, 07:32
Prisoner
т.е. я так  понял, его ещё и допрограмировать надо ? ((

Prisoner
03-03-2004, 20:18
Именно, если у тебя есть времени с неделю, то через оную я выкрою время на твою задачу. Сейчаз совсем не можно :(.

vippy
04-03-2004, 10:44
Prisoner
Т.е. поможешь настроить? )))
ну, если дело так - то повременю :biggrin:

vippy
10-03-2004, 05:35
Prisoner

так, напомню - вдруг забыл
:biggrin:

hasherfrog
01-04-2004, 15:22
Я не могу Вам обещать, что напишу программу, которая будет делать то что Вам нужно, но вот несколько полезных ссылок.
Во-первых, удалять процессы можно не только системными KILL.exe, но и утилитами от
Mark Russinovich. (sysinternal) (http://www.sysinternals.com/ntw2k/freeware/pstools.shtml)
Во-вторых, мйакрософтовский AT.EXE может, ИМХО, повторятьпериодическую  проверку - это то, что касается цикла проверки каждые 10-15 минут.
В-третьих, самое главное. Вот тут есть объяснение
"HOWTO: Detect If an Application Has Stopped Responding" (http://support.microsoft.com/default.aspx?kbid=231844)
Там пример на VB. Немного модифицировав его, можно добиться желаемого результата.
Если Вы правильно "сведете" все имеющиеся знания, то, может быть, добьетесь того, что нужно. Очень надеюсь, что поделитесь полученным опытом.
А если совсем плохо с программированием, может,  Prisoner вдруг поможет. Или я.

Prisoner
02-04-2004, 03:51
Я уже помог :(... блин.

Guest
02-04-2004, 07:30
Prisoner
Хммм..... пока что ещё нет )))

hasherfrog
Спасибо за инфу, я щас разговаривал с одним програмером, попробуем сделать такую на Дельфях. Если получится - откроем линейку собственного софта )))) Естесвенно фриварного )) ВОт тут ваша инфа нам будет полезна. Большое спасибо ))

vippy
02-04-2004, 07:33
P.S. Гвест - это я ))
Prisoner
Ты мне уже помого - это однозначно ! ))) Но вот задачка пока не решена (( ЧТож будем искать решение таковой )))

hasherfrog
07-04-2004, 09:05
vippy
http://smiles.ru/coll/pain/flag.gif
По поводу автозакрытия зависших программ:
Идем в HKCU\Control Panel\Desktop\
1) Ставим WaitToKillAppTimeout = 20000 <- Ждать завершение зависшего процесса 20 сек.
2) Ставим HungAppTimeout = 15000 <-  Считать процесс зависшим, если он 15 сек. не отвечает на сигналы системы
3) Ставим AutoEndTask = 1 <-  Самое главное. Автоматически закрывать зависшие процессы

Guest
10-04-2004, 12:43
hasherfrog
знаю, но это будет выполнятся только при завершении работы виндов. Или вы мне предлагаетет периодически перегружать сервак ? )))

hasherfrog
10-04-2004, 14:36
vippy
Да, сорри, AutoEndTask работает только при выключении виндов и используется только для ускорения этого самого выключения. Сорри еще раз. В заблуждение меня ввел некий русский сайт, не буду показывать пальцем :(

vippy
13-04-2004, 13:05
hasherfrog
всё ок )) Я блин домучаю этот вопрос (ведь нет же ничего невозможного?) -)

hasherfrog
27-05-2004, 09:50
vippy
Вы удивитесь (http://www.rsdn.ru/?article/qna/baseserv/hungapp.xml). Есть функция IsHungAppWindow!




© OSzone.net 2001-2012