PDA

Показать полную графическую версию : [решено] Автоматическое завершение процесса.


ГрМакс
18-01-2008, 14:52
Проблема Такая. Есть Станция WinSrv2000 на которой стоит некая (кривонаписанная) прога с утечкой памяти как только память заполняется до определенного объема машина естессно виснет приходится сбрасывать память руками (раз в 1.5 - 2 часа). Вопрос. Возможно ли автоматизировать этот процесс? Т.е. память должна сбрасываться не через определенный интервал времени, а по мере заполнения. Можно тупо мочить процесс.
PS
Исправлять ошибки в проге вне моей компетенции.
Следующая (исправленная) версия выйдет неизвестно када.

Dimas_83
18-01-2008, 23:52
freeram - Утилита для очистки оперативной памяти - освобождает ее от накапливающегося со временем мусора как в автоматическом режиме, так и вручную. Кроме этого, показывает в графическом виде текущий статус памяти, а также загрузку RAM и процессора.

Petya V4sechkin
19-01-2008, 12:49
ГрМакс, можно скриптом .vbs (класс WMI Win32_Process (http://msdn2.microsoft.com/en-us/library/aa394372(VS.85).aspx)):
strComputer = "."
Set objWMIService = GetObject("winmgmts:" _
& "{impersonationLevel=impersonate}!\\" _
& strComputer & "\root\cimv2")

Set colProcesses = objWMIService.ExecQuery( _
"Select * From Win32_Process " _
& "Where Name = 'notepad.exe'")

Killed = False
For Each objProcess In colProcesses
If objProcess.WorkingSetSize > 6291456 Then
objProcess.Terminate
Killed = True
End If
Next

If Killed Then
Set objShell = Wscript.CreateObject("Wscript.Shell")
objShell.Run "notepad.exe"
End If

Если notepad.exe запущен и занимает более 6 метров памяти, он убивается и запускается снова. Заменить notepad.exe на ваш процесс, а 6291456 на нужное ограничение памяти (в байтах). Выполнение скрипта можно вставить в планировщик заданий (скажем, раз в минуту).

ГрМакс
22-01-2008, 11:27
Petya V4sechkin
СПС. Помогло :yahoo:
Все работает как надо.

starav
30-01-2008, 07:37
Я прошу прощения за лузерство!
Как запустить этот скрипт?

У меня немного другая проблема.

Какая-то кривая прога, точнее процесс имеется. Каждое утро мне приходится его в ручную удалять (убивать).
Может есть какая-то команда для выполнения из командной строки? Там все равно им надо будет командный файл запускать!

Petya V4sechkin
30-01-2008, 09:54
starav, в командной строке:
Taskkill /?

sushnyak
07-10-2012, 16:06
Интересует найти процесс который использует максимальное кол-во памяти и завершить его.
Как это реализовать батником ?

Iska
07-10-2012, 18:50
sushnyak, используйте VBScript (почти всё необходимое для Вашего скрипта есть выше (http://forum.oszone.net/post-720620.html#post720620)).

Вопрос — зачем?




© OSzone.net 2001-2012