Команда SLEEP входит в состав дополнительного пакета Resource Kit и используется в командных файлах для организации режима ожидания фиксированного интервала времени.
Формат командной строки:
sleep -m миллисекунды
SLEEP /? — отобразить краткую справку по использованию команды
Для прерывания команды sleep можно использовать комбинации клавиш CTRL+C или CTRL+Break.
В качестве альтернативы команды sleep используется команда ping для петлевого интерфейса с указанием количества эхо-запросов, соответствующего длительности задержки в секундах. Поскольку эхо-запрос для петлевого интерфейса выполняется практически мгновенно, а интервал между запросами равен 1 секунде, такой способ вполне приемлем, и не требует установки Resource Kit или копирования утилиты sleep.exe для выполнения задержки на требуемый интервал времени.
Примеры выполнения задержек с использованием ping.exe :
ping –n 1 localhost > nul — задержка на 1 секунду. Перенаправление вывода на фиктивное устройство nul используется для подавления вывода утилиты ping.exe
ping –n 1 127.0.0.1 > nul — то же, но с указанием IP-адреса петлевого интерфейса.
В операционных системах Windows Vista и старше, для организации задержек при выполнении командных файлов можно использовать команду TIMEOUT
Открытый христианский форум JesusChrist.ru
Добро пожаловать на Открытый христианский форум JesusChrist.ru. Для того чтобы писать в форуме, Вам необходимо зарегистрироваться и войти на форум через ссылку для входа.
Полезнее для истории не удалять тему, а написать людям, как решилась проблема.
Форумы на то и полезны, что в них не только вопросы, но и ответы есть. 🙂
eyecatchup / rk-tools.md
Windows Resource Kit Tools
Advanced tool-set to streamline administrative tasks for Microsoft® Windows®.
The Microsoft® Windows® Resource Kit Tools (RK-Tools) are a set of tools to help System-Administrators, Developers, and Powerusers streamline a wide range of common, administrative tasks for the Microsoft® Windows® Operating System (OS).
200+ different programs / tools are included in the software bundle.
The toolkit’s overall feature-set includes (but is not limited to):
Troubleshooting Windows® OS issues
Managing Windows® Active-Directory®
Configuring Windows® networking and security features
Automating software deployment
Note: The RK-Tools are not officially supported on 64-bit platforms.
Windows® Server 2003 Resource Kit Tools
The Microsoft® Windows® Server 2003 version of the RK-Tools software bundle can be freely downloaded from the permanent mirror links below.
File name
Version
Date published
File size
rktools.exe
1.0
4/28/2003
11.8 MB
30 MB of free disk space
Have an officially supported OS installed:
Microsoft® Windows® Server 2003 family
Microsoft® Windows® XP (SP1)
Alternativly, have an unonofficially & partially supported OS installed:
Microsoft® Windows® Vista family
Microsoft® Windows® 7 family
Microsoft® Windows® 10 family
Note: If the Beta version of RK-Tools is installed, it needs to be removed first.
(Official) Install Instructions
Choose a download mirror in the download section above, follow the link to the (external) download page and click the Download link to start the download.
Do one of the following:
To start the installation immediately, click Open (or Run this program from its current location).
To copy the download to your computer for installation at a later time, click Save (or Save this program to disk).
To install the Resource Kit tools, run the rktools.exe file.
After you accept the License Agreement (EULA), all necessary files are installed, by default, to the directory: %SYSTEMDRIVE%\Program Files\Windows Resource Kits\Tools (or %SYSTEMDRIVE%\Program Files (x86)\Windows Resource Kits\Tools )
Prior to starting and using any RK-Tools, and for help, find the release notes and read the documentation, located in the readme.htm file in the installation directory.
One of the following direct-links should work when RK-Tools was installed to the default path and on drive C .
Open documentation in browser (on 32-bit platforms)
Open documentation in browser (on 64-bit platforms)
Though the available RK-Tools package is named «Microsoft® Windows® Server 2003 RK-Tools» and it was specifically released for Server 2003, all tools have official and full Windows® XP support, too.
Unsupported OS Versions
Though not officially supported, you can also install the RK-Tools Server 2003 bundle on Windows® Vista, Windows® 7 and Windows® 10, but note that some of the tools will not work as intended or not work at all (e.g. some tools generate errors like Dll missing ).
Notes for Windows® 7
In Windows® 7, when you launch the installer, you will get an error saying This program has known compatibility issues . Just ignore the warning and click Run program and continue with installation.
The following table shows a complete list of all programs / tools(incl. a short description), which are provided by the Resource Kit.
Пилим свою службу Windows – руководство для «не настоящих программистов»
Однажды вы задумаетесь, как превратить скрипт или приложение в Windows-службу. Скорее всего, задача окажется не такой уж тривиальной – приложению как минимум потребуется специальный интерфейс для получения команд от системы. А раз есть требования и ограничения, то есть и скрипты, и милые сердцу костылики для преодоления.
Статья будет полезна тем, кто, как и я — «программист не настоящий».
Зачем нужна служба, если есть назначенные задания
В отличие от назначенных заданий служба работает постоянно, запускается при старте ПК и может управляться средствами Windows. А еще регулярно запускаемому скрипту могут понадобиться данные с предыдущего запуска, и может быть полезно получение данных из внешних источников — например, в случае TCP или Web сервера.
Лично мне за последние пять лет приходилось создавать службу три с половиной раза:
Потребовалось создать сервис на fail2ban для Windows 2003., который работал с логами FileZilla и Apache, а при подозрении на брутфорс блокировал IP штатными средствами Windows — ipsec.
Аналог телнет-сервера для домашних версий Windows. Понадобилось выполнять команды на удаленных рабочих станциях, которые были под управлением Windows 7 Home. По сути, вторая попытка поиграть в службы.
Музыкальный проигрыватель для торгового зала под Windows. Задачу по ТЗ можно было решить при помощи mpd и пачки скриптов, но я решил — если уж делать скрипты, то почему бы и не «сваять» проигрыватель самому. За основу взял библиотеку BASS.dll.
Когда выбирали веб-сервер с поддержкой загрузки файлов под Windows, одним из вариантов был HFS. Сам по себе работать он не может, поэтому пришлось «запихивать» его в службу. В результате решение не понравилось, и просто установили «тему» Apaxy на web-сервере Apache.
Для создания службы можно использовать взрослые языки программирования вроде C. Но если вы не хотите связываться с Visual Studio, то возьмите готовые утилиты. Существуют платные решения вроде FireDaemon Pro или AlwaysUp, но мы традиционно сосредоточимся на бесплатных.
Способ первый. От Microsoft
Этот уже немолодой механизм состоит из двух компонентов: утилиты instsrv.exe для установки сервиса и srvany.exe — процесса для запуска любых исполняемых файлов. Предположим, что мы создали веб-сервер на PowerShell при помощи модуля Polaris. Скрипт будет предельно прост:
Работа так называемого «сервера».
Теперь попробуем превратить скрипт в службу. Для этого скачаем Windows Resource Kit Tools, где будут наши утилиты. Начнем с того, что установим пустой сервис командой:
Где WebServ — имя нашего нового сервиса. При необходимости через оснастку services.msc можно задать пользователя, под которым будет запускаться служба, и разрешить взаимодействие с рабочим столом.
Теперь пропишем путь к нашему скрипту при помощи магии реестра. Параметры службы есть в разделе реестра HKLM\SYSTEM\CurrentControlSet\Services\WebServ. В нем нам нужно добавить новый раздел Parameters и создать там строковый параметр Application, указав в нем путь к исполняемому файлу. В случае скрипта PowerShell он будет выглядеть так:
Настроенная служба.
Можно запустить и радоваться.
Работающая служба.
Однако у этого способа есть недостатки:
Утилиты старые, разработаны до изобретения PowerShell, UAC и прочих вещей.
Srvany не контролирует работу приложения. Даже если оно выпадет в ошибку, служба продолжит свое дело как ни в чем не бывало.
Придется донастраивать и копаться в реестре. Вы же помните, что копаться в реестре небезопасно?
Поэтому перейдем к методу, частично лишенному этих проблем.
Способ второй, почти взрослый
Существует утилита под названием NSSM — Non-Sucking Service Manager, что можно перевести как не-плохой менеджер служб. В отличие от предыдущей, она поддерживается разработчиком, и исходный код опубликован на сайте. Помимо обычного способа, доступна и установка через пакетный менеджер Chocolately.
Создать сервис можно из обычной командной строки, вооружившись документацией на сайте разработчика. Но мы воспользуемся PowerShell. Потому что можем, разумеется.
Установка через PowerShell.
Для разнообразия проверим работу службы не браузером, а тоже через PowerShell командой Invoke-RestMethod.
И вправду работает.
В отличие от srvany, этот метод позволяет перезапускать приложение на старте, перенаправлять stdin и stdout и многое другое. В частности, если не хочется писать команды в командную строку, то достаточно запустить GUI и ввести необходимые параметры через удобный интерфейс.
GUI запускается командой:
Настроить можно даже приоритет и использование ядер процессора.
Действительно, возможностей куда больше, чем у srvany и ряда других аналогов. Из минусов бросается в глаза недостаточный контроль над всем процессом.
Налицо нехватка «жести». Поэтому я перейду к самому хардкорному методу из всех опробованных.
Способ третий. AutoIT
Поскольку я давний любитель этого скриптового языка, то не смог пройти мимо библиотеки под названием _Services_UDF v4. Она снабжена богатой документацией и примерами, поэтому под спойлером сразу приведу полный текст получившегося скрипта.
Итак, попробуем «завернуть» в нее наш веб-сервис:
Разберу подробнее момент запуска приложения. Он начинается после операции $bServiceRunning = True и превращается в, казалось бы, бесконечный цикл. На самом деле этот процесс прервется, как только служба получит сигнал о завершении — будь то выход из системы или остановка вручную.
Поскольку программа для скрипта является внешней (powershell.exe), то после выхода из цикла нам нужно закончить ее работу с помощью ProcessClose.
Для этого скрипт необходимо скомпилировать в .exe, а затем установить службу, запустив exe с ключом -i.
Оно работает!
Разумеется, этот способ не самый удобный, и все дополнительные возможности придется реализовывать самостоятельно, будь то повторный запуск приложения при сбое или ротация логов. Но зато он дает полный контроль над происходящим. Да и сделать в итоге можно куда больше — от уведомления в Telegram о сбое службы до IPC-взаимодействия с другими программами. И вдобавок — на скриптовом языке, без установки и изучения Visual Studio.
Расскажите, а вам приходилось превращать скрипты и приложения в службы?