Я ищу устойчивый способ определить, может ли сервис быть остановлен или уничтожен

disable_classes=gettext в Вашем php.ini должен сделать это.

4
задан 5 January 2013 в 17:38
1 ответ

Самый «надежный» способ определить, можно ли остановить или убить службу - это проанализировать ее исходный код, чтобы увидеть, правильно ли он обрабатывает завершение работы или событие остановки.

Следующим лучшим способом является присоединитесь к нему с помощью отладчика и установите точки останова вокруг важных событий.

Вы не говорите нам, что делает эта служба или как она работает, но если вы хотите посмотреть, какой файл обрабатывает процесс, открытый во время нормальной работы , на мой взгляд, Sysinternals ' Process Explorer - самый простой способ сделать это. Вы также можете видеть активность файловой системы, происходящую в реальном времени, с помощью Process Monitor, фильтруя результаты в соответствии с тем процессом, который вы хотите видеть.

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

sc query your-service даст вам то, что диспетчер служб думает, что служба способна, но опять же, в конечном итоге это зависит от того, как была написана служба, чтобы определить, была ли эта функция реализована должным образом или нет.

Изменить: ваша служба зависает, когда вы пытаетесь остановить он говорит мне, что он был написан неправильно.

Edit: О, и последнее, если вы хотите сделать с этим что-то скриптовое, handle.exe - это программа командной строки для отслеживания дескрипторов. Вы можете проанализировать его вывод. Все эти утилиты Sysinternals находятся на общей папке WebDAV \ live.sysinternals.com \ Tools \

2
ответ дан 3 December 2019 в 04:00

Теги

Похожие вопросы