CMD/BAT - Перезапустить службу bat файлом

Ответить
Аватара пользователя
ruslanstep1

CMD/BAT - Перезапустить службу bat файлом

Сообщение ruslanstep1 »

Здравствуйте Все!!!

У меня есть проблема, требуется перезапустить службу если она начинает использовать память больше 300 м.

Допустим программа называется test.exe в tasklist и когда ее используемая память больше 300 м то перезапуск службы с названием Test_Test.exe.

И нужно чтоб велись логи записи типа:

02.02.2012 23:00:05 the program was restarted test.exe



Всем спасибо.
Аватара пользователя
alex_03

Re: CMD/BAT - Перезапустить службу bat файлом

Сообщение alex_03 »

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



Во-первых как узнать из cmd сколько потребляет служба памяти - я не знаю.

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



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



обращайтесь если реально горит помогу с кодом
Аватара пользователя
ferget

Re: CMD/BAT - Перезапустить службу bat файлом

Сообщение ferget »

в 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

Re: CMD/BAT - Перезапустить службу bat файлом

Сообщение alex_03 »

может тогда просто через определенные интервалы времени перезагружать сервис.

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

Re: CMD/BAT - Перезапустить службу bat файлом

Сообщение alex_03 »

for /f "skip=3 delims=" %i in ('tasklist /FI "IMAGENAME eq test.exe"') do echo %i

Это тебе для затравки.
Аватара пользователя
roma35

Re: CMD/BAT - Перезапустить службу bat файлом

Сообщение roma35 »

Подниму темку. Может кто знает как перезапустить службу из 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

Re: CMD/BAT - Перезапустить службу bat файлом

Сообщение Iska »

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



Код:

Код: Выделить всё

wmic.exe Service where "PathName like 'C:\\Program Files\\1C\\Licence 1.1\\Bin\\LicenceServer.exe%'" get Name /value

Можете и тут:


Цитата alexinqmetal:



В консоли служб
CMD/BAT - Перезапустить службу bat файлом




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



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



А что, подвисает?
Аватара пользователя
alexinqmetal

Re: CMD/BAT - Перезапустить службу bat файлом

Сообщение alexinqmetal »

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



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

Вернуться в «Программирование и базы данных»