![]() |
Запуск без видимого окна с получением PID дочернего процесса
Приветствую уважаемых форумчан.
Есть скрипт — загрузчик, который стартует портабельную сборку nginx + php + mysql + доп. модули, он рассчитан на запуск как от юзера, так и в качестве сервиса (например, через nssm). Хотелось бы организовать пул процессов интерпретатора php-cgi на разных портах, и такая возможность в принципе есть через конфиг бэкенда в nginx, но для отслеживания возможных падений (а у php это не столько редко случается) и перезапуска конкретного экземпляра мне нужен PID запущенного процесса. Я знаю о возможности запуска через wmic process call create с получением PID дочернего процесса, но тут есть проблема: я запускаю через hidcon, соответственно получаю PID hidcon-а, а не php-cgi. Собственно, вопрос: как запустить без видимого окна и получить PID? Или каким ещё образом можно отслеживать одинаковые процессы, запущенные с разными аргументами? Скрипт в текущем виде
Код:
@Echo Off |
Цитата:
Цитата:
|
Цитата:
Тогда попрошу подсказки, как в VBS вернуть PID процесса в stdout или errorlevel, чтобы получить его основным скриптом. |
Вложений: 1
WSH оказался не лучшим вариантом, в тестовой сборке у пользователей пошли ложно-положительные срабатывания антивирусов именно на сам vbs, а обьяснять каждому, как в этом зоопарке антивирусов добавить в исключения, мне честно говоря лень.
Пришлось идти по сложному варианту и просить друга помочь с написанием аналога hidcon. Выкладываю здесь, вдруг кому ещё пригодится, исходники в том же архиве, C++, собрано под x86. Синтаксис: easy_spawner "<имя программы>" <аргумент 1> ... <аргумент N> Вызываемая программа может как находиться в PATH, так и быть указана полным или относительным путем. Второй и последующий аргументы передаются вызываемой программе. PID запущенного процесса выводится в stdout и легко получается конструкцией вида Код:
For /F "delims=" %%P In ('easy_spawner' "program.exe" -arg1=test --test') Do Set PID=%%~P |
А на какой ОС вы используете easy_spawner?
А то у меня на 10 х64 не фурычит. Какие-то окошки мигают но в таскменеджере видно что ничего не запущенно. |
Patroklos, тестировалось на x64 Win10 Enterprise, тестовые сборки проверял на x86 Win10 Home. Имейте в виду, у файла нету цифровой подписи, поэтому при первом запуске его может блокировать SmartScreen.
Попробуйте добавить в path ту директорию, из которой запускаете целевой exe. Вот живой пример того, как используется у меня: HTML код:
Set PHP_Pool[]="9123","9124","9125" |
Время: 22:17. |
Время: 22:17.
© OSzone.net 2001-