O que é svchost e por que várias instâncias estão em execução?

27

Há seis instâncias em execução na minha área de trabalho e provavelmente dez em um servidor que eu gerencio. O que é isso e é vital para o funcionamento do sistema?

jldugger
fonte
RI MUITO. Tenho 91 deles rodando no meu laptop!
Sen Jacob

Respostas:

16

svchost, hospeda serviços no Windows Consulte KB . Se você usa o Process Explorer, pode ver quais serviços estão sendo executados dentro de um processo específico.

Rob Haupt
fonte
11
Então, isso é mais ou menos equivalente ao inetd no linux? Uma estrutura de servidor de uso geral, para que os desenvolvedores possam escrever serviços sem se preocupar com a parte do código do servidor?
2513 Jason Tan
O mesmo tipo de idéia, Jason, mas obviamente com mais alcance do que o inetd, que geralmente apenas sustenta tarefas do tipo webbish, não é? Uma boa analogia, porém, certamente perto o suficiente para o dinheiro ...
Rob Moir
20

Muitos componentes em execução do Windows são implementados como serviços (consulte todos os serviços na abertura da sua máquina Control Panel > Administrative Tools > Services). Esses são programas especializados sendo executados em segundo plano. Eles não são iniciados pelo usuário conectado, mas sim o próprio sistema operacional.

A maioria dos serviços não são executáveis ​​independentes (arquivos EXE), mas são implementados em bibliotecas (DLLs), que podem ser usadas pela execução de processos. Como o nome sugere, o Svchost ou "Service Host" é o executável padrão do Windows para executar essas DLLs. Você pode encontrar o arquivo svchost.exe no %systemroot%\system32diretório

Se você quiser saber qual instância do svchost está executando qual serviço, digite

 tasklist /svc /fi "IMAGENAME eq svchost.exe"

em um console da linha de comandos (cmd).

Na máquina onde fiz a captura de tela, uma das instâncias do svchost está executando 21 serviços diferentes, por exemplo. Esse agrupamento de serviços permite melhor controle e depuração mais fácil, de acordo com a documentação da Microsoft .

texto alternativo

Grupos Svchost.exe são identificados na seguinte chave do Registro:

HKEY_LOCAL_MACHINE\Software\Microsoft\WindowsNT\CurrentVersion\Svchost

Uma dica (se você executa o Windows Vista, Windows 7 ou Windows Server 2008): você pode abrir o Gerenciador de Tarefas e clicar com o botão direito do mouse em um processo svchost.exe específico e escolher a opção "Ir para o Serviço". Isso mostrará a guia Serviços , onde todos os serviços em execução no svchost.exeprocesso selecionado serão marcados.

Há um documento muito interessante no Centro de Download da Microsoft:

Referência dos Serviços do Sistema do Microsoft Windows Server 2003

Este documento contém resumos de todos os serviços disponíveis para a família de sistemas operacionais Windows Server 2003. Os serviços são listados em ordem alfabética por nome de exibição. Após uma descrição de cada serviço, uma tabela lista as principais informações sobre o serviço.

Todo serviço do Windows é listado com todos os seus detalhes. Você aprende, por exemplo, que o nome do arquivo executável do serviço de serviços de terminal é

 svchost.exe -k termsvcs 
splattne
fonte
+1 obrigado pela informação .... você e seu representante de 8000 pontos ... sério, porém, esse é um ótimo recurso. Eu me considero versado no Win CLI, mas não sabia disso. Obrigado!
cop1152
7

Svchost é a abreviação de "Service Host". Ele mantém a maioria dos serviços em sua máquina em execução. Existem alguns Serviços que se hospedam em seu próprio arquivo .exe, mas a maioria dos Serviços do Windows precisa ser hospedada em um processo svchost.exe. Os serviços em sua máquina lidam com coisas importantes, como rede, servidor RpC, áudio, log de eventos etc.

Digite "services.msc" em Iniciar-> Executar para visualizar os Serviços que você está executando em sua máquina. Se você considerar alguém desnecessário, poderá interromper o serviço.

Digite "tasklist / SVC" para ver quais serviços estão hospedados nos diferentes arquivos svchost.exe.

Frode Lillerud
fonte
1

Aqui está um one-liner do PowerShell que gera todos os serviços hospedados nos processos svchost.exe:

PS>get-process svchost | % {get-wmiobject win32_service -filter "processid=$($_.id)"} | format-table processid,name,displayname,state,status -auto

processid name          displayname                               state   status
--------- ----          -----------                               -----   ------
      316 HTTPFilter    HTTP SSL                                  Running OK
     1328 DcomLaunch    DCOM Server Process Launcher              Running OK
     1328 TermService   Terminal Services                         Running OK
     1392 RpcSs         Remote Procedure Call (RPC)               Running OK
     1528 AudioSrv      Windows Audio                             Running OK
     1528 BITS          Background Intelligent Transfer Service   Running OK
     1528 Browser       Computer Browser                          Running OK

A versão mais curta de uma linha é assim:

gps svchost | % {gwmi win32_service -f "processid=$($_.id)"} | ft proc*,name,disp*,stat* -auto
aleksandar
fonte