Форум программистов, компьютерный форум, киберфорум
Наши страницы
Batch (CMD/BAT)
Войти
Регистрация
Восстановить пароль
 
Рейтинг 4.78/9: Рейтинг темы: голосов - 9, средняя оценка - 4.78
svoping
0 / 0 / 0
Регистрация: 27.09.2012
Сообщений: 32
1

Мониторинг состояния службы

30.05.2017, 21:30. Просмотров 1826. Ответов 9
Метки нет (Все метки)

Всем доброго времени суток.
Прошу помочь с созданием батника, задача следующая:
1. Батник запускался бы с запуском Windows - решил с помощью планировщика
2. Затем чтобы батник работал след. образом
Каждый час запрашивал информацию о состоянии службы(servicename), если служба имеет состояние "running", то батник
уходил в ожидание еще на час, если служба имеет другое состояние, то перезапускал бы(полная остановка и запуск) службу, и опять в ожидание на час.
0
QA
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
30.05.2017, 21:30
Ответы с готовыми решениями:

Мониторинг работы службы с использованием команды SC
Всем, доброго дня. Застрял на простом моменте, помогите плиз. Необходимо удаленно мониторить...

Контроль состояния службы cmd/bat
Всем привет) Перерыл кучу пространства, но так и не смог найти подходящий bat Необходимо:...

Мониторинг состояния процессов
День добрый. нужно написать программу, реализующую мониторинг состояния процессов Unix. Схема...

Мониторинг состояния соединения
При работе с БД появилась у меня мысла, что было бы неплохо в приложении сделать какоето...

Мониторинг состояния выполнения программы
Подскажите, пожалуйста, возможно ли в матлаб на форме guide каким-то образом мониторить состояние...

9
ixoyz
168 / 102 / 38
Регистрация: 01.06.2015
Сообщений: 409
Записей в блоге: 1
Завершенные тесты: 1
31.05.2017, 06:13 2
Если чётко по задаче
PowerShell
1
2
3
4
5
6
7
8
9
$serv='spooler';
while ($true) {
    $stat=(Get-Service $serv).status; 
    echo $stat; 
    if ($stat -ne 'Running') {
        echo ('Restart '+$serv);
        Set-Service $serv -status Stopped; 
        Set-Service $serv -status Running}; 
    sleep 3600;}
Windows Batch file
1
powershell $serv='spooler';while ($true) {$stat=(Get-Service $serv).status; echo $stat; if ($stat -ne 'Running') {echo ('Restart '+$serv); Set-Service $serv -status Stopped; Set-Service $serv -status Running}; sleep 3600;}
Но я бы сделал иначе. Убрал бы цикл и задержку из скрипта, чтоб он просо проверял статус службы и перезапускал если что, и планировщику сказал бы запускать задачу каждый час, т.к. если его постоянно держать в оперативке его может кто-нибудь выгрузить, и задача выполнятся не будет.
PowerShell
1
2
3
4
5
6
7
$serv='spooler';
$stat=(Get-Service $serv).status; 
echo $stat; 
if ($stat -ne 'Running') {
    echo ('Restart '+$serv);
    Set-Service $serv -status Stopped; 
    Set-Service $serv -status Running};
Windows Batch file
1
powershell $serv='spooler';$stat=(Get-Service $serv).status; echo $stat; if ($stat -ne 'Running') {echo ('Restart '+$serv); Set-Service $serv -status Stopped; Set-Service $serv -status Running}
В примере в качестве службы используется spooler.

Добавлено через 27 минут
Также рекомендую обратить внимание на настройку службы вкладка Восстановление, действие при сбое. Возможно вам и скрипт станет не нужен.
0
v_svitere
700 / 410 / 135
Регистрация: 03.06.2009
Сообщений: 1,197
Записей в блоге: 4
31.05.2017, 10:25 3
ixoyz,
Убрал бы цикл и задержку из скрипта, чтоб он просо проверял статус службы и перезапускал если что, и планировщику сказал бы запускать задачу каждый час
Это - огромный костыль.
Вот в этой теме, описаны куда как, лучшие варианты реализации, мониторинга на POSH.
Запуск кода powershell как службы

Использование подписки на событие, идеологически вернее, чем какие-нибудь бесконечный циклы, или планировщики запускающие задачу каждый час.
0
ixoyz
31.05.2017, 13:16
  #4

Не по теме:

v_svitere, по мне так и Запуск кода powershell как службы - костыль. Если говорить об идеологии, я б zabbix поднял и его заставил бы такое контролить.

0
v_svitere
700 / 410 / 135
Регистрация: 03.06.2009
Сообщений: 1,197
Записей в блоге: 4
31.05.2017, 13:28 5
ixoyz, из всех решений, на мой взгляд, подписка на событие - лучше всех.

Просто ваш вариант, уж совсем плох, скажем если служба упала, через пару минут после старта, в бесконечном цикле и планировщике, пройдет больше 50 минут пока служба стартанет.

При подписке же, перезапустится сразу же.


Zabbix - определенно вещь хорошая, но разворачивать его, например, ради, только одного мониторинга состояния сервиса, я бы не стал.
0
ixoyz
168 / 102 / 38
Регистрация: 01.06.2015
Сообщений: 409
Записей в блоге: 1
Завершенные тесты: 1
31.05.2017, 13:52 6

Не по теме:

Цитата Сообщение от v_svitere Посмотреть сообщение
Zabbix - определенно вещь хорошая, но разворачивать его, например, ради, только одного мониторинга состояния сервиса, я бы не стал.
а я как-бы и не говорю, что для такой задачи стоит разворачивать zabbix. Я считаю, что ИТ инфраструктура в принципе должна мониториться и средства мониторинга нужно использовать по максимуму.
Цитата Сообщение от v_svitere Посмотреть сообщение
Просто ваш вариант, уж совсем плох
как-бы не мой вариант
Цитата Сообщение от svoping Посмотреть сообщение
Прошу помочь с созданием батника, задача следующая:
1. Батник запускался бы с запуском Windows - решил с помощью планировщика
2. Затем чтобы батник работал след. образом
Каждый час запрашивал информацию о состоянии службы(servicename), если служба имеет состояние "running", то батник
уходил в ожидание еще на час, если служба имеет другое состояние, то перезапускал бы(полная остановка и запуск) службу, и опять в ожидание на час.
Таким образом сделал то, что попросили.
А плюсы, минусы и как в конечном итоге реализовать - это решать автору темы, что ему нужно.



Добавлено через 3 минуты

Не по теме:

Цитата Сообщение от ixoyz Посмотреть сообщение
Также рекомендую обратить внимание на настройку службы вкладка Восстановление, действие при сбое. Возможно вам и скрипт станет не нужен.
v_svitere, тоже вопрос, а нужны ли решения, что мы с вами предлогаем в принципе?



Добавлено через 5 минут
Цитата Сообщение от v_svitere Посмотреть сообщение
на мой взгляд, подписка на событие - лучше всех
А как данное решение будет работать если служба остановилась корректно? Хотя-бы в сравнение с тем-же планировщиком.
0
v_svitere
700 / 410 / 135
Регистрация: 03.06.2009
Сообщений: 1,197
Записей в блоге: 4
31.05.2017, 14:01 7
ixoyz,
v_svitere, тоже вопрос, а нужны ли решения, что мы с вами предлогаем в принципе?
Здесь, с вами согласен, вполне возможно штатный функционал решит проблему.
А как данное решение будет работать если служба остановилась корректно? Хотя-бы в сравнение с тем-же планировщиком.
Естественно, штатная остановка службы (7036) и аварийное завершение (7031) это разные Event ID:
0
ixoyz
31.05.2017, 14:12
  #8

Не по теме:

Цитата Сообщение от v_svitere Посмотреть сообщение
Естественно, штатная остановка службы (7036) и аварийное завершение (7031) это разные Event ID:
На сколько я понял из вашей темы, ваше решение сработает только на аварийную остановку. А если служба может остановится корректно сама или от рук пользователя или вообще не стартанёт (повиснет запуск часа на полтара)? При таких вариантах планировщик оказывается более уневерсальным и работоспособным.
Хоть согласен, что ваше решение лаконичнее для сбоев, но я всё же останусь при своём: что моё решение, что ваше решение - это всё костыли.

0
v_svitere
700 / 410 / 135
Регистрация: 03.06.2009
Сообщений: 1,197
Записей в блоге: 4
31.05.2017, 14:19 9
ixoyz,
На сколько я понял из вашей темы, ваше решение сработает только на аварийную остановку.
Нет.
Все зависит только от гибкости написания сценария, реализовать можно как угодно.
0
ixoyz
168 / 102 / 38
Регистрация: 01.06.2015
Сообщений: 409
Записей в блоге: 1
Завершенные тесты: 1
31.05.2017, 14:41 10
Цитата Сообщение от v_svitere Посмотреть сообщение
Нет.
Все зависит только от гибкости написания сценария, реализовать можно как угодно.
а, всё, понял
Упустил по началу момент запуска скрипта
0
31.05.2017, 14:41
Answers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
31.05.2017, 14:41

Мониторинг состояния созданного процесса
подскажите, как реализовать... создаю процесс ZeroMemory(&si, sizeof(si)); si.cb =...

Мониторинг состояния компьютера в реальном времени
Здравствуйте! Хочу сделать веб-интерфейс для отображения состояния серверов в реальном времени:...

Мониторинг состояния аппаратного Raid массива
Всем доброго дня! Нужна помощь в создании скрипта для проверки состояния аппаратного Raid 1, с...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
10
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2019, vBulletin Solutions, Inc.