Как протестировать, работает ли услуга из командной строки

Посмотрите на JVM Profiler , выпущенный UBER.

JVM Profiler - это инструмент, разработанный UBER для анализа приложений JVM в распределенной среде. Он может подключать Java-агент к исполнителям приложения Spark / Hadoop распределенным способом и собирать различные показатели во время выполнения. Это позволяет отслеживать произвольные java-методы / аргументы без изменения исходного кода (аналогично Dtrace).

Вот сообщение в блоге .

49
задан Scott Langham 9 December 2008 в 16:00
поделиться

6 ответов

sc query "ServiceName" | find "RUNNING"
73
ответ дан Igal Serban 7 November 2019 в 21:31
поделиться

Немного нестандартно размышляя, я собираюсь предположить, что powershell может быть ответом на современные машины XP / 2003 и, конечно, на Vista / 2008 и новее (вместо этого из .bat / .cmd). Любой, у кого есть опыт работы с Perl, довольно быстро почувствует себя как дома.


$serviceName = "ServiceName";
$serviceStatus = (get-service "$serviceName").Status;

if ($serviceStatus -eq "Running") {
    echo "Service is Running";
}
else {
    #Could be Stopped, Stopping, Paused, or even Starting...
    echo "Service is $serviceStatus";
}

Другой способ, если у вас есть значительные вложения в пакетную обработку, - это запустить сценарий PS как однострочный, возвращая код выхода.


@ECHO off
SET PS=powershell -nologo -command
%PS% "& {if((get-service SvcName).Status -eq 'Running'){exit 1}}"

ECHO.%ERRORLEVEL%

Запуск поскольку однострочник также обходит политику подписи кода PS по умолчанию за счет беспорядка. Чтобы поместить команды PS в файл .ps1 и запустить его как powershell myCode.ps1 , вы можете обнаружить, что подписание сценариев PowerShell необходимо для их автоматического запуска (в зависимости от вашей среды). См. http://www.hanselman.com/blog/SigningPowerShellScripts.aspx для получения дополнительной информации

.
3
ответ дан 7 November 2019 в 11:31
поделиться

если Вы не возражаете для объединения сетевой команды с grep, можно использовать следующий сценарий.

@echo off
net start | grep -x "Service"
if %ERRORLEVEL% == 2 goto trouble
if %ERRORLEVEL% == 1 goto stopped
if %ERRORLEVEL% == 0 goto started
echo unknown status
goto end
:trouble
echo trouble
goto end
:started
echo started
goto end
:stopped
echo stopped
goto end
:end
8
ответ дан 7 November 2019 в 21:31
поделиться

Попробуйте

sc query state= all 

для списка сервисов и работают ли они или нет.

2
ответ дан Galwegian 7 November 2019 в 21:31
поделиться

Вы могли использовать wmic с / локаль опция

call wmic /locale:ms_409 service where (name="wsearch") get state /value | findstr State=Running
if %ErrorLevel% EQU 0 (
    echo Running
) else (
    echo Not running
)
6
ответ дан NicJ 7 November 2019 в 21:31
поделиться

Я нашел это:

  sc query "ServiceName" | findstr RUNNING  

, кажется, делает примерно правильную вещь. Но, я волнуюсь, что это не сделало вывод достаточно для работы над неанглийскими операционными системами.

1
ответ дан RealHowTo 7 November 2019 в 21:31
поделиться