1

Тема: Вычисление продолжительности работы службы.

Всем привет!
Хочу написать скрипт который останавливал службу в определенный момент времени - через определенный период.
Существует ли готовая реализация - метод который вычислял - возвращал время работы службы?
Или нужно писать?

2

Re: Вычисление продолжительности работы службы.

в определенный момент времени - через определенный период.

Определитесь. В «определенный момент времени» — это одно. «через определенный период» — другое (и, кстати, от чего считать этот период?).

Существует ли готовая реализация - метод который вычислял - возвращал время работы службы?

По имени службы получите её PID. Затем по PID получите процесс и его свойство «.CreationDate». Переведите его в обычный формат Date и пользуйтесь.

3

Re: Вычисление продолжительности работы службы.

Определитесь. В «определенный момент времени» — это одно. «через определенный период» — другое (и, кстати, от чего считать этот период?).

через определенный период =  900 секунд

4

Re: Вычисление продолжительности работы службы.

alexii пишет:

и, кстати, от чего считать этот период?

От чего отсчитывать эти 900 секунд?

5

Re: Вычисление продолжительности работы службы.

alexii пишет:
alexii пишет:

и, кстати, от чего считать этот период?

От чего отсчитывать эти 900 секунд?

От значения времени старта процесса той службы которой он принадлежит.  И как вы написали выше через метод CreationDate.

Правильно понимаю логику:
1. Получаю значение с помощью метода  CreationDate например: 20130129133257.453125+240
2. Записываю получившееся значение в строку/в файл/в массив для того чтобы вытащить 1332.
3. Получаю текущее время дату системы через метод пока не выбрал.
4. Записываю получившееся значение в строку/в файл/в массив для того чтобы вытащить 1349
5. Вычисляю значение - это разница 1349 - 1332 = 17 - присваиваю значение переменной n
6. Создаю условие которое сравнивает два значения n > 15 если истино - то останавливаю службу иначе выход.

6

Re: Вычисление продолжительности работы службы.

Dr.Hofmann пишет:

6. Создаю условие которое сравнивает два значения n > 15 если истино - то останавливаю службу иначе выход.

Вот, здесь можно и не "выход", а "усыпить" скрипт на оставшееся количество секунд (WScript.Sleep), а после того, как скрипт выждет указанную паузу - сразу останавливайте службу.

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

Если службы среди работающих еще нет, то можно поискать примеры подписывания на события старта служб и как только такая служба появляется - обработчик события "усыпить" на требуемое время и по окончанию паузы останавливать службу.


Все это Вы думаете проделывать на своей машине или на удаленной? Речь идет об одной конкретной службе или о перечне служб?

WBR. Roman

7

Re: Вычисление продолжительности работы службы.

Все это Вы думаете проделывать на своей машине или на удаленной? Речь идет об одной конкретной службе или о перечне служб?

На другой машине в одной сети - не удаленной.

Это одна служба которая состоит из нескольких процессов - она связана с модемным соединением. Продлема в том что в программе не проработано управление модемом.  В идиале при запуске службы - стартует и модемное соединение - потом авторизируется модем - потом приложение после завершении передачи файлов сессия должна завершиться и отключить модем. К сожалению отключение модема происходит по таймауту от удаленного сервера куда он подключается - служба висит но транспорт файлов не происходит. Поэтому решил написать скрипт который останавливал её через 15минут после запуска.

8

Re: Вычисление продолжительности работы службы.

На другой машине в одной сети - не удаленной.

Это и есть — на удалённой.

Это одна служба которая состоит из нескольких процессов

???

9

Re: Вычисление продолжительности работы службы.

???

одна служба - один процесс

10

Re: Вычисление продолжительности работы службы.

Dr.Hofmann пишет:

[..]
В идиале при запуске службы - стартует и модемное соединение - потом авторизируется модем - потом приложение после завершении передачи файлов сессия должна завершиться и отключить модем.

Так запуск службы идет автоматически при старте системы, приложения или вручную пользователем?

Если, например, старт службы - при ручном старте приложения, то можно было бы сделать старт приложения через свой скрипт, который сначала проверит наличие незакрытой службы, закрыл бы ее при необходимости, а потом уже через некоторую паузу стартовал приложение.


Если старт службы осуществляется на старте системы, то становится непонятно - если Ваш скрипт службу остановит, то кто же ее потом стартует?

WBR. Roman