Войти

Показать полную графическую версию : [решено] как следить за службой?


BANDI-OGA
14-07-2010, 04:36
проблема такая, у нас стоит сервер печати, там подключены принтера, через них идет печать (ну это не суть важна), так вот, по какой то причине происходит забивание задания в одном из принтеров и появляется служба WINWORD, при удалении ее печать проходит, как мне следить за этой службой без захода на сервер?

Angry Demon
14-07-2010, 07:54
появляется служба WINWORD
По секрету скажу, не существует в природе такой службы.
Ещё раз чётко и внятно объясните проблему (только без "ну это не суть важна"), а то и ответы будут такими же.

BANDI-OGA
14-07-2010, 09:10
не правильно выразился:) не служба, а процесс WINWORD.exe
т.е. при печатании процесс WINWORD.exe появляется, а когда печать забивается (т.е. копятся задания на печать), то я этот процесс убиваю и печать проходит вся, т.е. мне надо мониторить этот процесс, чтоб каждый раз не залазить на сервак и не смотреть зависла ли печать или нет, может есть какая прога, чтоб смс отправляла

monkkey
14-07-2010, 11:37
Удалите для начала Microsoft Office с сервера печати. Или хотя бы выясните, с какой радости Word запускается при создании очереди печати.

BANDI-OGA
14-07-2010, 12:06
microsoft office на сервер нужен, подскажите как можно мониторить процесс удаленно, не залазя на сервак?

monkkey
14-07-2010, 16:42
Process Explorer v12.04 (http://technet.microsoft.com/en-us/sysinternals/bb896653.aspx)

QRS
14-07-2010, 17:33
как можно мониторить процесс удаленно »

Рекомендую powershell:

$pr = Get-WMIObject Win32_Process -computer COMPUTERNAME | where-object {$_.Name -eq 'WINWORD.exe'}
if($pr -eq $null){процесс не обнаружен}else{процесс работает}

Естественно этот код запускается под учетной записью, имеющей админские права на удаленном компьютере.

BANDI-OGA
15-07-2010, 06:36
Рекомендую powershell:

$pr = Get-WMIObject Win32_Process -computer COMPUTERNAME | where-object {$_.Name -eq 'WINWORD.exe'}
if($pr -eq $null){процесс не обнаружен}else{процесс работает}

Естественно этот код запускается под учетной записью, имеющей админские права на удаленном компьютере.

я не сильно шарю в написании скриптов, подскажите, проверяю в powershell Ваш скрипт (допустим на taskmgr.exe процессе), за место {процесс не обнаружен} вставляю taskmgr.exe, скрипт у меня запускает этот taskmgr.exe или подскажите разобраться

QRS
15-07-2010, 18:18
Вместо процесс обнаружен вставь:

$a = new-object -comobject wscript.shell
$b = $a.popup("WINWORD!!!",60,"ОН ОПЯТЬ ЗАПУСТИЛСЯ :(((((",0)

"60" - количество секунд, которое диалог будет отображаться на экране, если пользователь никак не отреагирует на него.
Дальше можно диалоговое окно превратить в "Yes/no"-запрос и по ответу Да принудительно выполнять завершение удаленного процесса (только я сам не силен в powershell - так кропаю помаленьку, когда задачки появляются).

BANDI-OGA
16-07-2010, 05:43
Вместо процесс обнаружен вставь:

$a = new-object -comobject wscript.shell
$b = $a.popup("WINWORD!!!",60,"ОН ОПЯТЬ ЗАПУСТИЛСЯ ((((",0)

"60" - количество секунд, которое диалог будет отображаться на экране, если пользователь никак не отреагирует на него.
Дальше можно диалоговое окно превратить в "Yes/no"-запрос и по ответу Да принудительно выполнять завершение удаленного процесса (только я сам не силен в powershell - так кропаю помаленьку, когда задачки появляются).

подскажи, как привязать этот скриптик к процессу?

BANDI-OGA
16-07-2010, 06:01
Не удается загрузить файл C:\Users\xxxx\Desktop\БезИмени1.ps1, так как выполнение скриптов запрещено для данной системы. Введите "get-help about_signing" для получения
дополнительных сведений.
At line:0 char:0

подскажите в чем проблема?

QRS
16-07-2010, 21:40
подскажи, как привязать этот скриптик к процессу? »
не понял вопроса...

пишешь powershell скрипт:

$pr = Get-WMIObject Win32_Process -computer COMPUTERNAME | where-object {$_.Name -eq 'WINWORD.exe'}
if($pr -eq $null){}else{
$a = new-object -comobject wscript.shell
$b = $a.popup("WINWORD!!!",60,"ОН ОПЯТЬ ЗАПУСТИЛСЯ ((((",0)
}


Вместо COMPUTERNAME указываешь реальное сетевое имя сервера, который собираешься мониторить; вместо WINWORD.EXE - указываешь имя процесса.
Скрипт запускаешь локально на своей машине с определенным интервалом... попробуй сначала руками запускать.

BANDI-OGA
18-07-2010, 07:07
QRS - Спасибо!! все получилось!

BANDI-OGA
18-07-2010, 11:00
еще такой вопрос, а можно как нить проследить занимаемую память процесса? допустим выше 30 метров при запуске скрипта, происходит обнаружение процесса, и он выдает окошко процесс завис
т.е. процесс у меня часто запускается, только не часто зависает

QRS
19-07-2010, 18:53
Запусти соответствующий процесс на сервере.

Открой окно powershell, в нем запусти строку, которой проверяешь наличие процесса:

$pr = Get-WMIObject Win32_Process -computer COMPUTERNAME | where-object {$_.Name -eq 'WINWORD.exe'}

дальше набери:
$pr
или
$pr | gm

там увидишь все свойства, которые есть у процесса; в гугле можешь посмотреть что значит каждый из параметров.
За объем памяти, по-моему отвечает $pr.WS:


if($pr -eq $null){echo "он не запустился"}else{
if($pr.WS -gt 30Mb) {
$a = new-object -comobject wscript.shell
$b = $a.popup("WINWORD!!!",60,"ОН ОПЯТЬ ЗАПУСТИЛСЯ ((((",0)
}
else{
echo "запустился, но ОЗУ меньше 30Мб!"
}
}

но может быть будет проще сразу завершить процесс?!:
if($pr -eq $null){echo "он не запустился"}else{
if($pr.WS -gt 30Mb) {$pr.Terminate(0)}
}

PS модератору: пора тему переносить в раздел программирование!!! :)

BANDI-OGA
20-07-2010, 04:50
QRS - спасибо, все получилось!! можно закрывать тему
PS: надо изачать powershell:)




© OSzone.net 2001-2012