Назад | Перейти на главную страницу

Остановка службы Windows не приводит к уничтожению процессов (служба использует ant)

У меня есть служба Windows на Windows Server 2008 R2, которую я настроил с помощью instsrv на srvany.exe исполняемый файл. Три значения в Parameters ключа устанавливаются следующим образом:

AppDirectory  C:\selenium-grid
Application   C:\ant\bin\ant.bat
AppParameters launch-hub

Служба запускается нормально, и при ее запуске в диспетчере задач появляются два процесса Java (один процесс - это муравей, а другой - класс Java, запущенный муравьем). Когда я останавливаю службу, состояние службы меняется на "Остановлено", но два процесса Java не исчезают.

Как мне остановить процессы, когда я остановлю службу?

К счастью, SRVANY - отстой. Есть альтернатива - «Менеджер службы без присасывания» (NSSM) - он завершит работу вашего приложения и всех дочерних процессов по сигналу остановки службы.

К сожалению, srvany.exe не предоставляет никакого метода для уничтожения процесса (ов), когда служба остановлена, поэтому в основном ваши варианты: (а) искать стороннюю альтернативу, которая предоставляет эту функциональность, или (б) писать такие замену себе.

Возможно, другой читатель знает о хорошей сторонней альтернативе, или вам может повезти с поиском в Google. Если вы решите выбрать вариант (b), возможно, я смогу дать вам фору, так что напишите мне письмо, если хотите - мой адрес указан в моем профиле. Или вы можете задать вопрос в StackOverflow.

У Srvany есть несколько хорошо известных недостатков, один из которых не прекращая процесс, который он запускает.

Обязательно прочтите о других потенциальных проблемах на на этой странице сравнивается Srvany и AlwaysUp (наше коммерческое приложение, которое закроет все подпроцессы, как вы ожидаете), чтобы избежать сюрпризов ...