The OpenNET Project / Index page

[ новости /+++ | форум | теги | ]

[Windows] Создание простейшего сервиса на основе пакетного ".cmd" файла. (win service)


<< Предыдущая ИНДЕКС Поиск в статьях src Установить закладку Перейти на закладку Следующая >>
Ключевые слова: win, service,  (найти похожие документы)
From: Anton Borisov <a.borisov@tesv.tmb.ru> Newsgroups: email Date: Mon, 24 Feb 2004 14:31:37 +0000 (UTC) Subject: [Windows] Создание простейшего сервиса на основе пакетного ".cmd" файла. Краткая предыстория. Была поставлена команда в кратчайшие сроки создать пакет, который удалял бы лишние одноименные приложения в системе. Времени на развертывание Visual Studio или подобных продуктов нет. И уж тем более не хватает времени на проектирование пакета. Поэтому требуется собрать из подручных средств необходимый сервис. Для этого нам потребуются следующие файлы из Resource Kit для Windows 2000: ps.exe, kill.exe, sleep.exe, instsrv.exe, srvany.exe. Вместо kill и ps я использовал утилиты с сайта http://www.sysinternals.com под названиями pslist, pskill. Итак, файлы, которые использовались имеют следующие размеры. 1)pslist.exe (86016 байт) 2)pskill.exe (77824 байт) 3)instsrv.exe (63488 байт) 4)srvany.exe (15872 байт) 5)sleep.exe (26013 байт) 6)killbill.cmd (сам файл сервиса) Файл сервиса я назвал так по названию одноименного фильма Квентина Тарантино :) Далее идет распечатка самого сервиса: @Echo Off REM ======================================================== REM 'KillBill' test service REM killing every process with PID != "First in chain" REM Anton Borisov, a.borisov@tesv.tmb.ru REM 18 Feb 2004 REM ======================================================== set LOG=C:\WinNT\Temp\killbill.log set PID=C:\WinNT\Temp\killbill.lst set TIME=60 set PRG=Far set MyCMD=KillBill Echo "==========[ %MyCMD% Service startup! ]==========" >> %LOG% time /t >> %LOG% date /T >> %LOG% :1 pslist | findstr %PRG% > %PID% for /f "skip=1 tokens=2" %%I in ( %PID% ) do pskill %%I >> %LOG% Echo "==========<< %MyCMD% terminated processes and sleeps now >>==========" >> %LOG% time /t >> %LOG% date /T >> %LOG% Sleep.exe %TIME% goto 1 О параметрах. В файл LOG складывается информация об "убитых" процессах и текущая информация о времени старта, функционировании сервиса. В файл PID записывается номера процессов, которые в системе обозначаются под именами PRG (в данном случае ловим процессы под именем Far). Каждые 60 секунд проверяется количество приложений под именем "Far" и если их количество больше 2, то второй и последующий процессы будут убиты. Строка for /f "skip=1 tokens=2" %%I in ( %PID% ) do pskill %%I >> %LOG% занимается обработкой номеров процессов. Файлы статистики и файл с номерами процессов складываются во временный каталог C:\WinNT\Temp. Месторасположение файлов со статистикой, списком процессов, времени проверки и имени процесса, как видите, задаются в "killbill.cmd". Установка сервиса: 1)Копируем файлы в каталог, например, (или в другое место, главное, чтобы переменная PATH содержала этот путь) и переходим туда же 2)Инициализируем сервис - C:\WinNT\instsrv.exe killbill.cmd C:\WinNT\srvany.exe 3)Запускаем "regedt32.exe" 4)Переходим на ветку HKLM\System\CurrentControlSet\Services в раздел killbill.cmd 5)Добавляем параметр: EDIT->Add Key под названием "Parameters" (Class="") 6)Переходим на созданный параметр и в него добавляем значение: Edit-> Add Value под названием Application (Data Type = REG_SZ, String = C:\WinNT\KillBill.cmd) 7)Закрываем редактор реестра 8)Из командной строки пишем: net start killbill.cmd Все, процесс запущен и работает. Дальнейший пуск/остановка управляются через меню Control Panel - > Services. Посмотреть какие процессы были убиты сервисом, а также время его запуска можно посмотреть в C:\WinNT\Temp\KillBill.log В итоге собрали процесс, как модно сейчас говорить, "без специального знания программных языков" ;-) Антон Борисов, a.borisov@tesv.tmb.ru 18 Февраля 2004

<< Предыдущая ИНДЕКС Поиск в статьях src Установить закладку Перейти на закладку Следующая >>

 Добавить комментарий
Имя:
E-Mail:
Заголовок:
Текст:




Партнёры:
PostgresPro
Inferno Solutions
Hosting by Hoster.ru
Хостинг:

Закладки на сайте
Проследить за страницей
Created 1996-2024 by Maxim Chirkov
Добавить, Поддержать, Вебмастеру