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

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

ruslanstep1 01-03-2012 23:09 1870460

Перезапустить службу bat файлом
 
Здравствуйте Все!!!
У меня есть проблема, требуется перезапустить службу если она начинает использовать память больше 300 м.
Допустим программа называется test.exe в tasklist и когда ее используемая память больше 300 м то перезапуск службы с названием Test_Test.exe.
И нужно чтоб велись логи записи типа:
02.02.2012 23:00:05 the program was restarted test.exe

Всем спасибо.

alex_03 02-03-2012 14:52 1870865

Расскажу по теме то что знаю

Во-первых как узнать из cmd сколько потребляет служба памяти - я не знаю.
Но знаю что любая служба или программа - это процесс, который потребляет память и время процессора.

Во-вторых такая задача скорее всего решается с помощью С++ , есть функции которые могут сканировать процессы и по какому-то конкретному процессу получить информацию о том сколько памяти он потребляет. Потом можно вызвать из этой же программы cmd с уже предопределенным параметром net stop <параметры > <служба> net start <параметры> <служба> и все.

обращайтесь если реально горит помогу с кодом

ferget 02-03-2012 15:42 1870904

тут есть на vbs
http://forum.oszone.net/thread-98464.html

ruslanstep1 02-03-2012 15:52 1870909

в cmd я знаю как найти.
tasklist /FI "IMAGENAME eq test.exe"
там будет вывод в англиской версии как раз уменя такая
Image Name PID Session Name Session# Mem Usage
============== =========== ======== ========== =========
test.exe 1432 Console 0 593 508 K

так вот можно перенаправить этот вывод в текставой документ и потом и выдернуть значение 593 508 K и сравнить типа
если [ 593 508 > 300 000 ] тогда ребут службы. вот как то так я просто не знаю как его реализовать в bat-нике. Поэтому и обратился сюда к вам

alex_03 02-03-2012 16:23 1870933

может тогда просто через определенные интервалы времени перезагружать сервис.
скажем подсчитаете что через каждые 2 часа память используется около 500 или выше , тогда надо каждые два часа вызывать батничек с рестартом сервиса

roma35 02-03-2012 22:23 1871203

for /f "skip=3 delims=" %i in ('tasklist /FI "IMAGENAME eq test.exe"') do echo %i
Это тебе для затравки.

alexinqmetal 26-06-2013 09:38 2174483

Подниму темку. Может кто знает как перезапустить службу из bat. В консоли служб путь к исполняемому файлу выглядит так "C:\Program Files\1C\Licence 1.1\Bin\LicenceServer.exe /Service". В диспетчере задач процесс висит LicenceServer.exe. Попытки использовать следующие команды не проходят:

net stop "C:\Program Files\1C\Licence 1.1\Bin\LicenceServer.exe"
Синтаксическая ошибка в имени файла, имени папки или метке тома.

net stop LicenceServer.exe
Указанная служба не установлена

Вариант с жестким убийством процесса оставляю на крайний случай. Может есть еще какие варианты чтобы автоматически перезапустить службу?

Iska 26-06-2013 10:08 2174492

Сначала получите имя службы, наподобие:
Код:

wmic.exe Service where "PathName like 'C:\\Program Files\\1C\\Licence 1.1\\Bin\\LicenceServer.exe%'" get Name /value
Можете и тут:
Цитата:

Цитата alexinqmetal
В консоли служб »

посмотреть имя в её свойствах.

Затем, используя полученное имя службы, пробуйте net stop/net start.

А что, подвисает?

alexinqmetal 26-06-2013 13:03 2174610

Спасибо, нашел имя службы оказалось LicenceService.

Подвисает не сама служба, а из-за 1С зависают лицензии, что очень мешает, приходится хотя бы раз в день перезапускать службу чтобы сбросить занятые лицензии. Поэтому пока ищу источник проблемы 1С и решил написать перезапускалку службы.


Время: 18:38.

Время: 18:38.
© OSzone.net 2001-