Svchost.exe (сервис-хост) или хост-процесс для служб Windows — компонент операционных систем Microsoft, используемый для запуска и выполнения служб из dll-файлов (динамически подключаемых библиотек). Если по-простому, то это процесс, точнее, множество процессов, которые обеспечивают функционирование всех основных подсистем Windows — от управления питанием компьютера до оформления рабочей среды (панелей, окон, меню и т. д.).
Поскольку сервис-хост прямо или косвенно влияет на всё, что вы делаете, видите и слышите на ПК, чрезмерная загрузка им процессора может быть связана с чем угодно.
В Linux служба — это программа, работающая в фоновом режиме . Службы можно запускать по запросу или во время загрузки.
Если вы используете Linux в качестве основной операционной системы или платформы разработки, вы будете иметь дело с различными службами, такими как веб-сервер, ssh или cron . Знание того, как перечислить запущенные службы или проверить статус службы, важно при отладке системных проблем.
Большинство последних дистрибутивов Linux используют systemd в качестве системы инициализации и диспетчера служб по умолчанию.
Systemd — это набор инструментов для управления системами Linux. Он используется для загрузки машины, управления службами, автоматического монтирования файловых систем, регистрации событий, настройки имени хоста и других системных задач.
В этой статье объясняется, как составить список служб в Linux.
I need to check if a Windows service is installed from a batch file. I can dip into something other than batch if I need to, but I would prefer not to. Is there any way to do this?
asked Oct 7, 2010 at 15:11
@echo off
SC QUERY ftpsvc > NUL
IF ERRORLEVEL 1060 GOTO MISSING
ECHO EXISTS
GOTO END
:MISSING
ECHO SERVICE MISSING
:ENDNote that the SC QUERY command queries by the short service name not the display name. You can find this name by looking at the General tab of a service’s properties in Service Manager.
answered Oct 7, 2010 at 15:31

53 gold badges298 silver badges383 bronze badges
You should using “query”, not “Stop” or something else command, the “Stop” can stop your service if it’s exist, then this is not the right way.
@echo OFF
set _ServiceName=SomeServiceName
sc query %_ServiceName% | find "does not exist" >nul
if %ERRORLEVEL% EQU 0 echo Service Does Not Exist.
if %ERRORLEVEL% EQU 1 echo Service Exist.answered Jun 25, 2014 at 22:34
M Sasan MHM Sasan MH
1 silver badge3 bronze badges
sc interrogate "nameofyourservicehere"I’ve found this really useful since tasklist won’t give informations on whether the service is installed or not. (or i did not find how)
10 gold badges36 silver badges54 bronze badges
answered Jan 26, 2013 at 20:38
Here is an example using sc query to verify if a windows service is installed and stop if found.
sc query | find /I "%tmpServiceName%" > nul
if not errorlevel 1 echo. && net stop %tmpServiceName%
if errorlevel 1 echo. - Windows service %tmpServiceName% is not running or doesn't exist.10 gold badges36 silver badges54 bronze badges
answered Oct 14, 2010 at 10:07
answered Oct 7, 2010 at 15:14
Chris Kooken
15 gold badges85 silver badges118 bronze badges
Рекомендуется
Ускорьте свой компьютер сегодня с помощью этой простой в использовании загрузки. г.
Вот несколько простых шагов, которые помогут вам устранить ошибку причины кластера mscs SQL 2008.
- 4 минуты на чтение.
Эта публикация поможет любому решить проблему, возникшую при установке SQL Server в кластере Windows Server.
Симптомы

При установке Microsoft SQL Server в кластере Windows Server правило проверки кластера, лежащее в основе процесса подключения, может завершиться ошибкой. Вы также можете получить следующее сообщение:
Ошибка Ошибка: «Ошибка проверки кластера службы кластеров Microsoft (MSCS)». Группа приходит с непроверенной, либо есть ошибки, с другой стороны глюки в отчете о проверке. Дополнительные ресурсы см. В KB953748 или в электронной документации по SQL Server. “
Файл журнала сборки может содержать сообщение, подобное следующему:
20 мая 2008 г., 05:27:18 Slp: оценка общих правил: Cluster_VerifyForErrors
2008-05-20 05:27:18 Slp: Правило выполняется на компьютере: SQLNode_Name
2008-05-20 05:27:18 Slp: оценка правила завершена: сбой
2008-05-20 05:27:18 Slp: Сообщение об оценке правила: Возможно, кластер не был проверен, или в отчете о тестировании могут быть ошибки.
Установочный архив пиломатериалов (Detail.txt), например, может быть стратегически расположен в файле % ProgramFiles% Microsoft SQL Server 100 Setup Bootstrap Log 20090316_112604 .
Для полноценного пробного запуска у правила воли есть замечательные способы входа, подобные следующим:
Имя компьютера: Cluster_VerifyForErrors: успешно
Причина
Метод проверки может не работать в различных условиях. В этой дилемме вам нужно будет выполнить просмотр вручную, чтобы убедиться, что конфигурация вашего компьютера или компьютера верна, прежде чем пытаться использовать новые обходные пути, упомянутые в этой статье. Вы можете часто использовать ссылки, упомянутые в разделе Ссылки для получения дополнительной информации о проверке группировок в средах Windows Server. Это избавит вас от гораздо большего количества проблем, чем вы могли бы при первой работе. Вы используете решение основных неудач.
Временное решение
Чтобы разрешить эту отправку, вам необходимо решить проблему, которая привела к сбою проверки. Как правило, если вы обнаружите, что эксперты утверждают, что проблема, вызвавшая положительный сбой проверки, может быть решена, вам обычно следует использовать параметр set. Командные обновления телефонной линии, описанные в этой статье, чтобы игнорировать некоторые сообщения об ошибках. И попробуйте это на рынках, попробуйте установить экземпляр отказоустойчивого кластера SQL Server. В этом случае перед использованием системы покупатели должны решить основную проблему, из-за которой проверка снова не прошла.
При появлении запроса перейдите к своему реальному жесткому диску и, кроме того, часто к папке, содержащей установку SQL Server (Setup.exe). Затем введите одну из следующих команд после, чтобы игнорировать разрешающее правило:
Чтобы встроенная сборка добавила примечания по отработке отказа, выполните команду почти на другом добавляемом узле:
Setup / SkipRules = Cluster_VerifyForErrors / Action = InstallFailoverCluster.Для одиночной установки Advanced или Enterprise выполните эту особую команду:
Setup / SkipRules = Cluster_VerifyForErrors / Action = CompleteFailoverClusterЕсли вы получаете эту ошибку проверки при добавлении определенного лучшего узла к существующей установке аварийного переключения, предложите команду на каждом добавляемом узле:
Setup / SkipRules = Cluster_VerifyForErrors / Action equals AddNode.
Рекомендуется

Параметр SkipRules для установки vki не является документированным преимуществом. Вы не должны использовать этот параметр для выбора любого правила, кроме Cluster_VerifyForErrors , если ваш CSS не инструктирует вас сделать это.
Тесты безопасности отказоустойчивого кластера SQL Server
Используя проверку кластера, эксперт может получить серию гораздо более важных тестов с помощью набора серверов и очистителей, которые вы хотели бы использовать на узлах в группе. В этом процессе массовой проверки лежащие в основе гвозди, болты и тесты программного обеспечения поддерживаются напрямую и просто индивидуально в преднамеренной конфигурации, чтобы успешно получить точную оценку отказоустойчивой кластеризации SQL Server.
Что делать, если проверочные тесты не пройдут в худшем случае
В случаях, когда тесты правил проверки кластера не проходят, Microsoft не рассматривает поддерживаемое решение. На самом деле существуют исключения для поддержки этого правила, например, когда человек с кластерами в нескольких разделах (географически разбросанных) не имеет общего хранилища. В таком сценарии из-за мастера проверки кластера ожидаемые значения pThis приведут к сбою большинства образцов памяти. Это все еще будет поддерживаемым ответом, поскольку остальная часть тестирования была легендарной.
Ссылки
Проверка оборудования для отказоустойчивого кластера
Постоянные экземпляры отказоустойчивого кластера (SQL Server)
Установить SQL Server из набора команд
Если вы запустите какой-то мастер проверки новой конфигурации на компьютере с полной версией Windows Server 2008, а также Windows Vista, проверка не удастся
Если вы попробуете этот вариант для установки одного пакета команд и установки. Если загрузка SQL Server завершится неудачно, убедитесь, что аппаратная конфигурация пакета ПК действительна, и, возможно, обратитесь в службу поддержки клиентов Microsoft (CSS) за помощью.
Параметр SQL для огромного экземпляра отказоустойчивого кластера сервера всегда в определенном отказоустойчивом кластере Windows Server, который вызывал ошибки в отчете о проверке кластера Windows Server, не поддерживается. Для любого типа экземпляра отказоустойчивого кластера SQL Server по сравнению со сценарием задержки ни один из наших отчетов о проверке кластера Windows Server, как правило, не будет содержать ошибок. Используйте CSS, чтобы гарантировать, что большинство конфигураций кластера определенно будут в отличном обслуживаемом состоянии.
Ускорьте свой компьютер сегодня с помощью этой простой в использовании загрузки. г.
Sql 2008 Mscs Cluster Verification Error
Sql 2008 Mscs Erro De Verificacao De Cluster
Sql 2008 Mscs Klusterverifieringsfel
Sql 2008 Mscs Clusterverificatiefout
Erreur De Verification Du Cluster Mscs Sql 2008
Sql 2008 Mscs Errore Di Verifica Del Cluster
Sql 2008 Mscs Cluster Uberprufungsfehler
Error De Verificacion Del Cluster De Sql 2008 Mscs
Sql 2008 Mscs Blad Weryfikacji Klastra
Sql 2008 Mscs 클러스터 확인 오류
- Check if a service is running
- If is it running, quit the batch
- If it is not running, start the service
The code samples I googled so far turned out not to be working, so I decided not to post them.
Starting a service is done by:
net start "SERVICENAME"- How can I check if a service is running, and how to make an if statement in a batchfile?
- I’m a bit confused. What is the argument I have to pass onto the net start? The service name or its display name?
asked Jul 24, 2010 at 12:28

27 gold badges95 silver badges162 bronze badges
for /F "tokens=3 delims=: " %%H in ('sc query "MyServiceName" ^| findstr " STATE"') do ( if /I "%%H" NEQ "RUNNING" ( REM Put your code you want to execute here REM For example, the following line net start "MyServiceName" )
)Explanation of what it does:
- Queries the properties of the service.
- Looks for the line containing the text “STATE”
- Tokenizes that line, and pulls out the 3rd token, which is the one containing the state of the service.
- Tests the resulting state against the string “RUNNING”
As for your second question, the argument you will want to pass to net start is the service name, not the display name.

17 silver badges24 bronze badges
answered Jul 24, 2010 at 12:45
20 gold badges158 silver badges186 bronze badges
answered Dec 3, 2010 at 15:34

5 gold badges38 silver badges55 bronze badges
sc query [ServiceName] | findstr /i "STATE"When I run it for my NOD32 Antivirus, I get:
STATE : 4 RUNNINGIf it was stopped, I would get:
STATE : 1 STOPPEDYou can use this in a variable to then determine whether you use NET START or not.
The service name should be the service name, not the display name.
answered Jul 24, 2010 at 12:36
That should do it:
FOR %%a IN (%Svcs%) DO (SC query %%a | FIND /i "RUNNING"
IF ERRORLEVEL 1 SC start %%a)answered Jul 24, 2010 at 12:34
Kristina Brooks
28 gold badges110 silver badges179 bronze badges
Language independent version.
@Echo Off
Set ServiceName=Jenkins
SC queryex "%ServiceName%"|Find "STATE"|Find /v "RUNNING">Nul&&( echo %ServiceName% not running echo Start %ServiceName% Net start "%ServiceName%">nul||( Echo "%ServiceName%" wont start exit /b 1 ) echo "%ServiceName%" started exit /b 0
)||( echo "%ServiceName%" working exit /b 0
)1 gold badge24 silver badges27 bronze badges
answered Aug 18, 2014 at 7:09

3 gold badges18 silver badges28 bronze badges
I just found this thread and wanted to add to the discussion if the person doesn’t want to use a batch file to restart services. In Windows there is an option if you go to Services, service properties, then recovery. Here you can set parameters for the service. Like to restart the service if the service stops. Also, you can even have a second fail attempt do something different as in restart the computer.
answered Apr 10, 2013 at 15:56
Cuando se use Windows en Español, el código debe quedar asi (when using Windows in Spanish, code is):
for /F "tokens=3 delims=: " %%H in ('sc query MYSERVICE ^| findstr " ESTADO"') do ( if /I "%%H" NEQ "RUNNING" ( REM Put your code you want to execute here REM For example, the following line net start MYSERVICE )
)Reemplazar MYSERVICE con el nombre del servicio que se desea procesar. Puedes ver el nombre del servicio viendo las propiedades del servicio. (Replace MYSERVICE with the name of the service to be processed. You can see the name of the service on service properties.)
5 gold badges45 silver badges61 bronze badges
answered Sep 3, 2012 at 12:29
For Windows server 2012 below is what worked for me. Replace only “SERVICENAME” with actual service name:
@ECHO OFF
SET SvcName=SERVICENAME
SC QUERYEX "%SvcName%" | FIND "STATE" | FIND /v "RUNNING" > NUL && ( ECHO %SvcName% is not running ECHO START %SvcName% NET START "%SvcName%" > NUL || ( ECHO "%SvcName%" wont start EXIT /B 1 ) ECHO "%SvcName%" is started EXIT /B 0
) || ( ECHO "%SvcName%" is running EXIT /B 0
)1 gold badge18 silver badges46 bronze badges
answered May 2, 2019 at 15:30
Magige Daniel
1 gold badge9 silver badges10 bronze badges
@echo off
color 1F
@sc query >%COMPUTERNAME%_START.TXT
find /I "AcPrfMgrSvc" %COMPUTERNAME%_START.TXT >nul
IF ERRORLEVEL 0 EXIT
IF ERRORLEVEL 1 NET START "AcPrfMgrSvc"answered Nov 2, 2012 at 16:00
set service=MyServiceName
for /F "tokens=3 delims=: " %%H in ('sc query %service% ^| findstr " STATE"') do ( if /I "%%H" NEQ "RUNNING" ( net start %service% for /F "tokens=3 delims=: " %%H in ('sc query %service% ^| findstr " STATE"') do ( if /I "%%H" EQ "RUNNING" ( SendMail /smtpserver localhost /to me@mydomain.com /from watchdog@mydomain.com /subject Service Autostart Notification /body Autostart on service %service% succeded. ) else ( SendMail /smtpserver localhost /to me@mydomain.com /from watchdog@mydomain.com /subject Service Autostart Notification /body Autostart on service %service% failed. ) ) )
)answered Mar 16, 2013 at 21:11
1 silver badge9 bronze badges
Starting Service using Powershell script. You can link this to task scheduler and trigger it at intervals or as needed.
Create this as a PS1 file i.e. file with extension PS1 and then let this file be triggered from task scheduler.
To start stop service
in task scheduler if you are using it on server use this in arguments
-noprofile -executionpolicy bypass -file “C:\Service Restart Scripts\StopService.PS1”
verify by running the same on cmd if it works it should work on task scheduler also
$Password = "Enter_Your_Password"
$UserAccount = "Enter_Your_AccountInfor"
$MachineName = "Enter_Your_Machine_Name"
$ServiceList = @("test.SocketService","test.WcfServices","testDesktopService","testService")
$PasswordSecure = $Password | ConvertTo-SecureString -AsPlainText -Force
$Credential = new-object -typename System.Management.Automation.PSCredential -argumentlist $UserAccount, $PasswordSecure
$LogStartTime = Get-Date -Format "MM-dd-yyyy hh:mm:ss tt"
$FileDateTimeStamp = Get-Date -Format "MM-dd-yyyy_hh"
$LogFileName = "C:\Users\krakhil\Desktop\Powershell\Logs\StartService_$FileDateTimeStamp.txt"
#code to start the service
"`n####################################################################" > $LogFileName
"####################################################################" >> $LogFileName
"###################### STARTING SERVICE ##########################" >> $LogFileName
for($i=0;$i -le 3; $i++)
{
"`n`n" >> $LogFileName
$ServiceName = $ServiceList[$i]
"$LogStartTime => Service Name: $ServiceName" >> $LogFileName
Write-Output "`n####################################"
Write-Output "Starting Service - " $ServiceList[$i]
"$LogStartTime => Starting Service: $ServiceName" >> $LogFileName
Start-Service $ServiceList[$i]
$ServiceState = Get-Service | Where-Object {$_.Name -eq $ServiceList[$i]}
if($ServiceState.Status -eq "Running")
{
"$LogStartTime => Started Service Successfully: $ServiceName" >> $LogFileName
Write-Host "`n Service " $ServiceList[$i] " Started Successfully"
}
else
{
"$LogStartTime => Unable to Stop Service: $ServiceName" >> $LogFileName
Write-Output "`n Service didn't Start. Current State is - "
Write-Host $ServiceState.Status
}
}
#code to stop the service
"`n####################################################################" > $LogFileName
"####################################################################" >> $LogFileName
"###################### STOPPING SERVICE ##########################" >> $LogFileName
for($i=0;$i -le 3; $i++)
{
"`n`n" >> $LogFileName
$ServiceName = $ServiceList[$i]
"$LogStartTime => Service Name: $ServiceName" >> $LogFileName
Write-Output "`n####################################"
Write-Output "Stopping Service - " $ServiceList[$i]
"$LogStartTime => Stopping Service: $ServiceName" >> $LogFileName
Stop-Service $ServiceList[$i]
$ServiceState = Get-Service | Where-Object {$_.Name -eq $ServiceList[$i]}
if($ServiceState.Status -eq "Stopped")
{
"$LogStartTime => Stopped Service Successfully: $ServiceName" >> $LogFileName
Write-Host "`n Service " $ServiceList[$i] " Stopped Successfully"
}
else
{
"$LogStartTime => Unable to Stop Service: $ServiceName" >> $LogFileName
Write-Output "`nService didn't Stop. Current State is - "
Write-Host $ServiceState.Status
}
}answered Nov 8, 2017 at 14:12

KR Akhil
3 gold badges15 silver badges32 bronze badges
@echo off
rem TODO: change to the desired service name
set TARGET_SERVICE=w32time
set SERVICE_STATE=
rem Surgically target third line, as some locales (such as Spanish) translated the utility's output
for /F "skip=3 tokens=3" %%i in ('""%windir%\system32\sc.exe" query "%TARGET_SERVICE%" 2>nul"') do ( if not defined SERVICE_STATE set SERVICE_STATE=%%i
)
rem Process result
if not defined SERVICE_STATE ( echo ERROR: could not obtain service state!
) else ( rem NOTE: values correspond to "SERVICE_STATUS.dwCurrentState" rem https://msdn.microsoft.com/en-us/library/windows/desktop/ms685996(v=vs.85).aspx if not %SERVICE_STATE%==4 ( echo WARNING: service is not running rem TODO: perform desired operation rem net start "%TARGET_SERVICE%" ) else ( echo INFORMATION: service is running )
)- Windows XP (32-bit) English
- Windows 10 (32-bit) Spanish
- Windows 10 (64-bit) English
answered Jun 22, 2018 at 11:47
@Echo off
Set ServiceName=wampapache64
SC queryex "%ServiceName%"|Find "STATE"|Find /v "RUNNING">Nul&&(
echo %ServiceName% not running
echo
Net start "%ServiceName%" SC queryex "%ServiceName%"|Find "STATE"|Find /v "RUNNING">Nul&&( Echo "%ServiceName%" wont start ) echo "%ServiceName%" started
)||( echo "%ServiceName%" was working and stopping echo Net stop "%ServiceName%"
)
pauseanswered Jan 12, 2017 at 6:56

Maybe a much simpler way? Just adding to the list of answers here:
@for /f "tokens=1,* delims=: " %%a in ('sc queryex state=Inactive') do net start "%%b"answered Feb 6, 2019 at 10:21
7 gold badges27 silver badges42 bronze badges
В этой статье мы рассмотрим методы устранения неполадок отказоустойчивых кластеров Windows Server 2008 R2. Существует много способов диагностики кластеров, и каждый специалист может иметь свои особые приемы. Однако здесь я представлю наиболее общие подходы к решению проблем
. Вначале поговорим о файлах, с которыми обычно приходится иметь дело, и об их описаниях.
Первое, с чем предстоит работать – диспетчер отказоустойчивости кластеров. Этот новый инструмент управления кластером позволяет руководить группами и ресурсами и выполнять диагностику неполадок. Диспетчер отказоустойчивости кластеров открывается из пункта «Администрирование» в меню «Пуск».
Каналы событий
Каждый, вероятно, знаком с журналом системных событий, в котором регистрируются критически важные события, ошибки и предупреждения. Однако это не единственное место, где фиксируются события. Начиная с Server 2008, существуют еще и каналы событий. На экране 1 показано, как найти каналы, имеющие отношение к отказоустойчивой кластеризации. Именно здесь следует искать все информационные и отладочные/диагностические события. На схеме мы видим следующие журналы и их каналы:
* Diagnostic (если выбран пункт Show Analytic and Debug Logs («отобразить журналы анализа и отладки»))
* Performance-CSV (если выбран пункт Show Analytic and Debug Logs)
* Diagnostic (если выбран пункт Show Analytic and Debug Logs)
* Diagnostic (если выбран пункт Show Analytic and Debug Logs)
* Diagnostic (если выбран пункт Show Analytic and Debug Logs).
События запуска/остановки службы кластеров, перемещения групп, перевода групп в онлайн/автономный режим и т.д. регистрируются в журнале FailoverClustering\Operational. Например:
-Идентификатор события: 1061
-Описание: служба кластеров успешно настроила отказоустойчивый кластер JohnsCluster.
-Идентификатор события: 4684
-Описание: диспетчеру отказоустойчивости кластеров не удалось связаться с серверами DNS для разрешения имени W2K8-R2-NODE2.contoso.com. Дополнительные сведения можно найти в канале диагностики диспетчера отказоустойчивости кластеров.
В журнале FailoverClustering-Manager\Diagnostic можно увидеть следующее:
-Идентификатор события: 4609
-Описание: ошибка при попытке проверки связи с W2K8-R2-NODE2.contoso.com. System.ApplicationException: не удалось связаться с одним или несколькими DNS-серверами. Убедитесь в правильности настройки DNS и полном подключении компьютера к сети.
-Идентификатор события: 4612
-Описание: проверка связи с W2K8-R2-NODE2.contoso.com завершилась сбоем.
Именно по этим событиям можно установить проблему подключения узла к серверу DNS и затем приступить к ее устранению. Не просматривая указанные журналы, о наличии неполадок можно будет судить по тому, что в диспетчере отказоустойчивости кластеров узел W2K8 R2-NODE2 будет отображен как неисправный. Еще один журнал в числе упомянутых выше, Failover-Clustering\Diagnostic, мы обсудим несколько позже.
Диспетчер отказоустойчивости кластеров
Для упрощения анализа системные ошибки и предупреждения можно просматривать из окна диспетчера отказоустойчивости кластеров. На главной странице на центральной панели находится ссылка на последние события кластера Recent Cluster Events (экран 2). Эта ссылка позволяет вывести на экран все предупреждения и ошибки, связанные с отказоустойчивым кластером, за последние 24 часа. События, собранные со всех узлов, сосредоточены в одном месте, что избавляет от необходимости открывать несколько журналов событий на нескольких компьютерах.
Для просмотра конкретных событий можно использовать элемент Query, доступ к которому открывается из элемента Cluster Events на левой панели главной страницы. В меню, которое мы открываем правым щелчком на Cluster Events, выберите пункт Query, либо укажите Query на панели Actions справа. На экране 3 показан фильтр событий кластера.
Диспетчер отказоустойчивости кластеров – удобный инструмент для отображения всех данных в одном месте. Предположим, что произошел отказ некоего ресурса диска. В окне диспетчера отказоустойчивости кластеров можно запросить все узлы, журнал системных событий System, а также указать уровень событий и конкретную дату. На главной странице можно будет увидеть, когда и на каких узлах случился отказ диска, и просмотреть все относящиеся к этому событию данные. Запросы можно сохранить для последующего использования.
Поиск событий определяют два параметра. События появления отказов можно искать по всем ресурсам, либо только по конкретному ресурсу. Для этого в меню Actions (экран 4) можно выбрать пункт Show the critical events for this application («Отображение критических событий для данного приложения») или Show the critical events for this resource («Отображение критических событий для данного ресурса»). Это позволяет формировать запрос всех событий из текущих журналов, создаваемых на всех узлах, либо ограничить список запрашиваемых событий рамками заданного периода времени или узла.
Журнал диагностики – эквивалент Cluster.Log в Windows 2003 Server Cluster. Начиная с отказоустойчивой кластеризации, реализованной в Server 2008, функции журнала больше соответствуют процессу трассировки событий для Windows Event Tracing (ETW). Вместо текстового файла Cluster.Log запись осуществляется в журнал диагностики, хранящийся в папке C:\Windows\System32\winevt\logs. Существует три журнала диагностики, куда осуществляется запись (clusterlog.etl.001, clusterlog.etl.002 и clusterlog.etl.003). В ходе каждой отдельной загрузки запись происходит только в один из журналов. Более подробные сведения о файлах журналов и их применении можно найти в блоге «Understanding the Cluster Debug Log in 2008» (http://blogs.technet.com/b/askcore/archive/2010/04/13/understanding-the-cluster-debug-log-in-2008.aspx).
Журнал диагностики включен и постоянно осуществляет запись. Если в меню, открываемом правым щелчком на FailoverClustering\Diagnostic, выбрать команду Disable log («Отключить журнал»), то можно просмотреть все записанные события. После отключения журнала система перестает записывать в него данные, и информация не сохраняется. Если журнал был отключен, то лучше всего сохранить данные в виде журнала событий или текстового файла и включить журнал снова. В журнале регистрируются три основных типа событий:
*событие 2049 – информационное;
*событие 2050 – предупреждение;
*событие 2051 – ошибка.
Эти события выводятся только из текущего журнала трассировки событий. ETL, в который осуществляется запись. Информация о событиях отображается так же, как в системном журнале и журнале приложения. Однако каждое событие занимает отдельную строку, поэтому просмотр всего журнала диагностики может оказаться делом довольно утомительным. Можно создать текстовый файл Cluster.Log с помощью команд, позволяющих свести воедино три журнала, что значительно облегчает восприятие информации.
Команда PowerShell Get-ClusterLog инициирует на всех узлах создание журнала Cluster.Log, который помещается в папку C:\Windows\Cluster\Reports. Меню Get-ClusterLog содержит пункты, которые могут оказаться полезными в определенных обстоятельствах. Например, для выяснения причин проблемы можно воспроизвести ее, а затем воспользоваться командой
Get-ClusterLog -TimeSpan 5
для вывода данных за последние 5 минут. Поскольку требуется журнал только с одного узла, на котором воспроизводится проблема, можно добавить параметр Node Nodename для создания Cluster.Log только на этом узле. Если требуется пересылка журналов с нескольких узлов, то установление соединения с каждым из них для получения нужного файла может занять некоторое время. В этом случае можно воспользоваться параметром –Destination, который обеспечит создание Cluster.Log на каждом узле и последующее копирование этого журнала в заданную папку в виде файла под именем, к которому прикреплено имя компьютера (например, W2K8-R2-Node1_Cluster.Log).
Создаваемый журнал Cluster.Log – это моментальный снимок во времени, который фиксирует текущее состояние и уже не обновляется. Если при создании журнала в папке Reports уже есть Cluster.Log, то существующий файл удаляется и освобождается место для нового.
Система наблюдения за ресурсами
Теперь перейдем к системе наблюдения за ресурсами Resource Host System (RHS), одной из функций которой является отслеживание состояния всех ресурсов в кластере. Система выполняет серию проверок (базовых и полных). Если ресурс не реагирует на проверку, то RHS генерирует следующее системное событие:
-Идентификатор события: 1230
-Описание: ресурс кластера ‘Cluster Disk 1’ (resource type”, DLL ‘clusres.dll’) либо поврежден, либо заблокирован.
Если диск не отреагировал на проверку состояния, то кластер выводит данный ресурс из работы и перезапускает его для возврата в рабочий процесс. Если бы такие проверки не проводились, отказ ресурса мог бы привести к «зависанию» компьютера или невозможности подключения из клиентского приложения.
Проверка кластера
Последняя тема обсуждения – отчет о результатах проверки кластера Cluster Validate. Чтобы кластер был «кондиционным», все его компоненты должны быть перечислены в каталоге Windows Server, и необходимо, чтобы он прошел полную проверку. Многие запускают проверку кластера до или сразу после создания. Однако если проблемы возникают позже, то лишь немногие помнят об этой функции, которую также можно использовать как средство диагностики. Если возникают проблемы с диском, запустите тесты хранилища Storage Tests. При наличии проблем с сетевой передачей данных воспользуйтесь сетевыми тестами Network Tests. С помощью функции проверки кластера можно также получить данные о группах, ресурсах и параметрах текущего отказоустойчивого кластера для обращения к этим сведениям в дальнейшем.
Достоинством проверки кластера является возможность ее запуска без прерывания рабочего процесса. При выборе теста хранилища Storage Test выдается вопрос, следует ли переводить работающие группы в автономный режим (экран 5). Установка по умолчанию предполагает невмешательство в работу групп, находящихся в режиме онлайн, и рабочий процесс не затрагивается. Тесты хранилища предусматривают проверку дисков, которые:
— принадлежат группам в автономном режиме;
— принадлежат активной группе хранения;
— не являются частью кластера.
При каждом запуске проверки кластера в каталоге C:\Windows\Cluster\Reports на каждом проверяемом узле создается файл с именем, часть которого составляют дата и время.
Существуют и другие способы диагностики отказоустойчивых кластеров, однако для их описания в этой статье не хватило бы места. Однако приведенные здесь рекомендации применимы к большинству проблем, с которыми вы можете столкнуться. Для получения дополнительной информации посетите блог Ask the Core Team (http://blogs.technet.com/b/askcore/) или Clustering and High Availability (http://blogs.msdn.com/b/clustering/). Успешной кластеризации!
Из-за чего Svchost загружает процессор
Ниже перечислены основные группы причин, из-за которых svchost грузит процессор:
- Высокая загруженность сетевых структур операционной системы. Чаще всего это вариант нормы, который встречается, например, во время скачивания и установки обновлений Windows. Нередко виновником бывает программа, активно использующая сеть, вроде торрент-клиента или браузера.
- Некорректная работа какой-либо службы или драйвера устройства. Эта и предыдущая причины тянут более чем на 50 процентов случаев.
- Заражение компьютера вредоносным ПО. Тянет примерно на 15-20% случаев.
- Повреждение, замена, изменение системных файлов (служб, динамических библиотек, самого svchost.exe). Могут быть вызваны не только вирусами, но и пиратскими активаторами Виндовс, а также программами для «улучшения, ускорения и украшения» системы.
- Аппаратная неисправность устройств.
Далее разберем по порядку, как выявить виновника проблемы и что делать дальше.
Отображение статуса службы
Чтобы проверить статус службы, используйте команду systemctl status :
sudo systemctl status <service_name>.serviceГде <service_name> — это имя сервисной единицы, которую вы хотите проверить. Например, чтобы определить текущий статус службы nginx, вы должны запустить:
sudo systemctl status nginx.service Вы можете опустить суффикс «.service». systemctl status nginx такое же, как systemctl status nginx.service .
● nginx.service - A high performance web server and a reverse proxy server Loaded: loaded (/lib/systemd/system/nginx.service; enabled; vendor preset: enabled) Active: active (running) since Wed 2020-12-23 19:13:50 UTC; 5s ago Docs: man:nginx(8) Process: 3061052 ExecStartPre=/usr/sbin/nginx -t -q -g daemon on; master_process on; (code=exited, status=0/SUCCESS) Process: 3061063 ExecStart=/usr/sbin/nginx -g daemon on; master_process on; (code=exited, status=0/SUCCESS) Main PID: 3061064 (nginx) Tasks: 2 (limit: 470) Memory: 6.0M CGroup: /system.slice/nginx.service ├─3061064 nginx: master process /usr/sbin/nginx -g daemon on; master_process on; └─3061065 nginx: worker process
Dec 23 19:13:50 linuxize.dev systemd[1]: Starting A high performance web server and a reverse proxy server...Команда напечатает следующую информацию:
Loaded—Loadedли служебный модуль и полный путь к файлу модуля. Он также показывает, разрешен ли запуск устройства во время загрузки.-
Active— активна и работает ли служба. Если ваш терминал поддерживает цвета, а служба активна и работает, точка (●) и часть «активен (работает)» будут напечатаны зеленым цветом. Строка также показывает, как долго работает служба. -
Docs— служебная документация. -
Process— информация о процессах обслуживания. -
Main PID— сервисный PID. -
Tasks— количество задач, учитываемых для объекта, и лимит задач. -
Memory— информация об используемой памяти. -
CGroup— информация о связанных контрольных группах.
Если вы хотите только проверить статус службы, используйте команду systemctl is-active . Например, чтобы убедиться, что служба nginx запущена, вы должны запустить:
systemctl is-active nginx.serviceactiveКоманда покажет вам статус службы. Если служба активна, команда возвращает статус выхода 0, что может быть полезно при использовании команды внутри сценариев оболочки.
А вдруг это вирус?
Видя высокую загрузку процессора одним из svchost, многие пользователи в первую очередь думают о заражении вирусами. Такое встречается, но не особенно часто. Хотя в последнее время развелось немало вредоносных программ-майнеров, один из признаков которых — высокая нагрузка на процессор и\или видеочип, особенно во время простоя компьютера.
На признаки вирусного заражения указывает следующее:
- Файл svchost.exe, породивший процесс, не имеет цифровой подписи Microsoft и находится в каталоге, отличном от \Windows\system32.
- Родительский процесс сервис-хоста — не Services.exe, а что-то другое, например, тот же svchost.
- Проверка контрольной суммы svchost.exe на Virustotal показала плохой результат или сервис не смог определить по контрольной сумме, что это за файл.
- В Windows XP и «семерке»- наличие процесса svchost.exe, запущенного от имени пользователя (в этих ОС им могут управлять только учетные записи системы, lockal service и network service). Обратите внимание, что в Windows 8 (8.1) и 10 несколько процессов svchost.exe от имени пользователя стало нормальным явлением.

- Неизвестные библиотеки dll и службы, которые работают в контексте сервис-хоста. Посмотреть список загруженных в память процесса библиотек можно при помощи Process Explorer (кнопка открытия панели библиотек обведена в меню красной рамкой). На скриншоте показана нормальная картина — все dll-ки имеют подпись Microsoft.

Что делать, если вирусная версия подтвердилась? Чаще всего достаточно просканировать систему любым антивирусом со свежими базами — большинство из них успешно справляется с удалением майнеров и прочих зловредов, которые проявляют себя подобным образом. Главное — не удаляйте файл svchost.exe, даже если он заражен, иначе это серьезно нарушит работу Windows. Зараженный файл следует заменить на чистый, взяв его из дистрибутива или со «здоровой» системы той же версии и разрядности. Либо восстановить способом, который описан ниже.
Проверяем целостность системных файлов
Неполадка, возникшая как следствие повреждения, подмены или изменения защищенных файлов Windows, чаще всего «вылечивается» встроенной в систему утилитой sfc.exe, запущенной в командной строке с параметром /scannow. Утилита выявляет дефектные данные и заменяет их чистыми, взятыми из хранилища WinSxS.

Разбираемся со службами, драйверами и оборудованием
Нередко причиной высокой загруженности процессора сервис-хостом становятся службы. В последней редакции Windows 10 найти проблемную службу стало проще, так как в основной массе хост-процессов их по одной. В Windows 7 и XP на 1 сервис-хост обычно приходится группа служб, иногда по 8-12 штук.
Чтобы увидеть перечень служб — потенциальных виновников неполадки в Виндовс 10, сделайте следующее:
- Откройте в диспетчере задач на вкладке «Подробности» контекст подозрительного процесса svchost и нажмите «Перейти к службам».

- Всё, что работает в этом процессе, на вкладке «Службы» выделяется голубым цветом. Если выделена одна строка, скорее всего, вы нашли вероятного виновника. Если это, как в моем примере, служба wuauserv, можете спокойно выдохнуть: ваша операционная система просто качает обновления. И если компьютер не слишком производительный, svchost.exe в это время может нагружать процессор на 100 процентов. После обновления нагрузка придет в норму.
- Если голубым выделено несколько служб, найти проблемную поможет поочередная остановка. Для этого в контекстном меню одной из служб следует кликнуть по пункту «Остановить». Если нагрузка не уменьшится, запустите эту службу и остановите следующую.

Кстати, в Windows 10 останавливать и запускать службы можно прямо на вкладке «Процессы».

Внимание! Перед диагностикой вышеописанным методом сохраните все несохраненные документы, поскольку завершение работы критически важной системной службы может привести к зависанию, перезагрузке компьютера или синему экрану смерти (BSoD).
Если выявленная служба связана с драйвером устройства, например, звука (Windows Audio), Bluetooth (Bthserv), печати (Spooler) и т. д., причина может крыться не в ней, а в драйвере или неисправности самого устройства. Если драйвер был установлен незадолго до возникновения проблемы, откатите его к предыдущей версии. Если он давно не обновлялся — обновите либо переустановите. При подозрении на неполадку оборудования проверьте его отключением или заменой на заведомо исправное.
Исследуем процессы и файлы
Основной инструмент, который будет помогать нам в диагностике и решении проблем с svchost, — это диспетчер задач Windows. В «десятке» после обновлений за 2018 год хост-процессы обозначены в нем как «Узел службы» или «Служба узла». Внутри каждого из них работает одна или несколько служб. Службы сгруппированы по уровням доступа к системным ресурсам.

В норме все хост-процессы создаются одним и тем же файлом — svchost.exe, который находится в папке \Windows\System32. Дабы убедиться, что процесс, который грузит систему, запущен именно оттуда, вызовите его контекстное меню и кликните «Открыть расположение файла». Открылась папка System32? Значит, первый тест пройден успешно.

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

Кроме того, нормальному файлу svchost.exe положено иметь цифровую подпись Microsoft. Чтобы ее проверить, откройте в системном диспетчере задач вкладку «Процессы», щелкните по подозрительной строке правой клавишей мышки и нажмите «Подробно».

Находясь во вкладке «Подробности», снова щелкните правой клавишей подозрительный svchost и выберите «Свойства».

Откройте вкладку цифровых подписей сервис-хоста. Если ее содержимое выглядит примерно как на скриншоте ниже, значит, всё в порядке.

Детальные сведения о файле, породившем хост-процесс, можно получить из содержимого вкладки «Подробно».

А если установить на компьютер простую бесплатную утилиту HasTab, «не отходя от кассы» можно получить контрольные суммы интересующего файла.

После чего проверить его MD5 на Virustotal.com (онлайн-сервис проверки файлов и других объектов множеством антивирусов). Если сервис покажет, что файл чист, значит, источник проблемы не в нем.

Список служб Linux
Systemd использует концепцию модулей, которыми могут быть службы, сокеты, точки монтирования, устройства и т. Д. Модули определяются с помощью текстовых файлов в формате ini . Эти файлы содержат информацию об устройстве, его настройках и командах для выполнения. Расширения файлов определяют тип файла модуля. Например, файлы системных сервисных модулей имеют расширение .service .
systemctl — это утилита командной строки, которая используется для управления systemd и службами. Он является частью экосистемы systemd и по умолчанию доступен во всех системах.
Чтобы получить список всех загруженных служебных единиц, введите:
sudo systemctl list-units --type serviceUNIT LOAD ACTIVE SUB DESCRIPTION
cron.service loaded active running Regular background program processing daemon
...Каждая строка вывода содержит следующие столбцы слева направо:
UNIT— Название сервисной единицы.-
LOAD— Информация о том, загружен ли файл объекта в память. -
ACTIVE— состояние активации файла модуля высокого уровня, которое может быть активным, перезагружающимся, неактивным, неудачным, активируемым, деактивируемым. Это обобщение столбцаSUB. -
SUB— состояние активации файла юнита низкого уровня. Значение этого поля зависит от типа объекта. Например, модуль типа service может находиться в одном из следующих состояний: неработающий, завершенный, сбойный, неактивный или работающий. -
DESCRIPTION— Краткое описание файла объекта.
По умолчанию команда перечисляет только загруженные активные юниты. Чтобы увидеть загруженные, но неактивные модули, передайте параметр --all :
sudo systemctl list-units --type service --allЕсли вы хотите увидеть все установленные файлы модулей, а не только загруженные, используйте:
sudo systemctl list-unit-filesПрочие рекомендации по борьбе с грузящим сервис-хостом
- Завершайте работу приложений, которые интенсивно используют сеть в фоновом режиме (торрент-клиенты).
- Если ваша операционная система давно не обновлялась, скачайте и установите все обновления. Они нужны не только для безопасности, но и для исправления различных ошибок в системе. Одна из таких ошибок в Windows 7 в свое время приводила к неудержимому клонированию виртуальных сетевых адаптеров Microsoft 6to4. Когда их накапливалось слишком много, svchost.exe так сильно нагружал процессор, что компьютеры превращались в «электронных черепах».
- Очищайте временные папки и прочий мусор. Проблему могут вызывать скопления недокачанных файлов, которые при подключении к Интернету начинают дружно докачиваться и забивают сеть.
- Активируйте в браузере запрет загрузки сайтов, использующих скрытый майнинг (в Опере это список «NoCoin» в настройках блокировки рекламы).
- Если причина — установка обновлений системы, а вам необходима высокая производительность компьютера, временно останавливайте или выгружайте службу wuauserv, но не забывайте потом запускать ее снова.
Выводы
Мы показали вам, как использовать команду systemctl для systemctl списка служб Linux и проверки их статуса.



