Компьютерный форум OSzone.net  

Компьютерный форум OSzone.net (http://forum.oszone.net/index.php)
-   Программирование и базы данных (http://forum.oszone.net/forumdisplay.php?f=21)
-   -   Отслеживаем процесс (http://forum.oszone.net/showthread.php?t=29696)

vippy 29-02-2004 10:35 205361

Добрый день!

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

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

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

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

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

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

Prisoner 29-02-2004 22:11 205362

Программу написать не сложно, единственым местом где будет финт ушами - определение зависания процесса, а в остальном дел на пару часов. Однако помятуя ритуал тестирования (альфа, бета, гамма, патчи...) рекомендую воспользоваться планировщиком nnCron у которого есть все, что вам необходимо. Для стран xUSSR программа бесплатна (точнее в readme указан метод активации), есть помощь на русском. Смотреть сюда .

vippy 01-03-2004 06:17 205363

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

Prisoner 01-03-2004 06:37 205364

Существование процесса.
Цитата:

PROC-EXIST: "proc_pattern"

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

Пример:

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


vippy 03-03-2004 07:32 205365

Prisoner
т.е. я так  понял, его ещё и допрограмировать надо ? ((

Prisoner 03-03-2004 20:18 205366

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

vippy 04-03-2004 10:44 205367

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

vippy 10-03-2004 05:35 205368

Prisoner

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

hasherfrog 01-04-2004 15:22 205369

Я не могу Вам обещать, что напишу программу, которая будет делать то что Вам нужно, но вот несколько полезных ссылок.
Во-первых, удалять процессы можно не только системными KILL.exe, но и утилитами от
Mark Russinovich. (sysinternal)
Во-вторых, мйакрософтовский AT.EXE может, ИМХО, повторятьпериодическую  проверку - это то, что касается цикла проверки каждые 10-15 минут.
В-третьих, самое главное. Вот тут есть объяснение
"HOWTO: Detect If an Application Has Stopped Responding"
Там пример на VB. Немного модифицировав его, можно добиться желаемого результата.
Если Вы правильно "сведете" все имеющиеся знания, то, может быть, добьетесь того, что нужно. Очень надеюсь, что поделитесь полученным опытом.
А если совсем плохо с программированием, может,  Prisoner вдруг поможет. Или я.

Prisoner 02-04-2004 03:51 205370

Я уже помог :(... блин.

Guest 02-04-2004 07:30 205371

Prisoner
Хммм..... пока что ещё нет )))

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


vippy 02-04-2004 07:33 205372

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

hasherfrog 07-04-2004 09:05 205373

vippy

По поводу автозакрытия зависших программ:
Идем в HKCU\Control Panel\Desktop\
1) Ставим WaitToKillAppTimeout = 20000 <- Ждать завершение зависшего процесса 20 сек.
2) Ставим HungAppTimeout = 15000 <-  Считать процесс зависшим, если он 15 сек. не отвечает на сигналы системы
3) Ставим AutoEndTask = 1 <-  Самое главное. Автоматически закрывать зависшие процессы

Guest 10-04-2004 12:43 205374

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

hasherfrog 10-04-2004 14:36 205375

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

vippy 13-04-2004 13:05 205376

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

hasherfrog 27-05-2004 09:50 205377

vippy
Вы удивитесь. Есть функция IsHungAppWindow!


Время: 14:59.

Время: 14:59.
© OSzone.net 2001-