¿Qué es svchost y por qué se ejecutan varias instancias?

27

Hay seis instancias ejecutándose en mi escritorio, y probablemente diez en un servidor que administro. ¿Qué es esto y es vital para la función del sistema?

jldugger
fuente
Jajaja ¡Tengo 91 de ellos corriendo en mi computadora portátil!
Sen Jacob

Respuestas:

16

svchost, aloja servicios en Windows Ver KB . Si usa Process Explorer , puede ver qué servicios se ejecutan dentro de un proceso en particular.

Rob Haupt
fuente
1
Entonces, ¿esto es más o menos equivalente a inetd en Linux? ¿Un marco de servidor de propósito general, para que los desarrolladores puedan escribir servicios sin preocuparse por la porción del código del servidor?
Jason Tan
El mismo tipo de idea Jason, pero obviamente con mayor alcance que inetd, que generalmente solo apoya tareas de tipo webbish, ¿no? Una analogía muy bien, aunque, sin duda lo suficientemente cerca para el efectivo ...
Rob Moir
20

Muchos componentes en ejecución de Windows se implementan como servicios (ver todos los servicios en la apertura de su máquina Control Panel > Administrative Tools > Services). Estos son programas especializados que se ejecutan en segundo plano. No los inicia el usuario conectado, sino el sistema operativo en sí.

La mayoría de los servicios no son ejecutables independientes (archivos EXE), sino que se implementan en bibliotecas (DLL), que pueden usarse mediante procesos en ejecución. Como su nombre lo indica, Svchost o "Service Host" es el ejecutable estándar de Windows para ejecutar estas DLL. Puede encontrar el archivo svchost.exe en el %systemroot%\system32directorio

Si desea saber qué instancia de svchost está ejecutando qué servicio, escriba

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

en una consola de línea de comando (cmd).

En la máquina, donde hice la captura de pantalla, una de las instancias de svchost está ejecutando 21 servicios diferentes, por ejemplo. Esta agrupación de servicios permite un mejor control y una depuración más fácil, de acuerdo con la documentación de Microsoft .

texto alternativo

Los grupos Svchost.exe se identifican en la siguiente clave de registro:

HKEY_LOCAL_MACHINE\Software\Microsoft\WindowsNT\CurrentVersion\Svchost

Un consejo (si ejecuta Windows Vista, Windows 7 o Windows Server 2008): puede abrir el Administrador de tareas y hacer clic derecho en un proceso svchost.exe en particular, y luego elegir la opción "Ir al servicio". Esto mostrará la pestaña Servicios , donde svchost.exese marcarán todos los servicios que se ejecutan bajo el proceso seleccionado .

Hay un documento muy interesante en el Centro de descargas de Microsoft:

Referencia de servicios del sistema de Microsoft Windows Server 2003

Este documento contiene resúmenes de todos los servicios disponibles para la familia de sistemas operativos Windows Server 2003. Los servicios se enumeran en orden alfabético por nombre para mostrar. Después de una descripción de cada servicio, una tabla enumera información clave sobre el servicio.

Todos los servicios de Windows se enumeran con todos sus detalles. Aprende, por ejemplo, que el nombre del archivo ejecutable del servicio Terminal Services es

 svchost.exe -k termsvcs 
splattne
fuente
+1 gracias por la información ... usted y su representante de 8000 puntos ... en serio, ese es un gran recurso para tener. Me considero muy versado en Win CLI, pero no estaba al tanto de esto. ¡Gracias!
cop1152
7

Svchost es la abreviatura de "Service Host". Mantiene la mayoría de los servicios en su máquina en funcionamiento. Habrá algunos servicios que se hospedarán en su propio archivo .exe, pero la mayoría de los servicios de Windows deben estar alojados dentro de un proceso svchost.exe. Los Servicios en su máquina manejan cosas importantes como redes, servidor RpC, audio, registro de eventos, etc.

Escriba "services.msc" en Inicio-> Ejecutar para ver los Servicios que está ejecutando en su máquina. Si considera que alguien es innecesario, puede detener el servicio.

Escriba "tasklist / SVC" para ver qué servicios están alojados por los diferentes archivos svchost.exe.

Frode Lillerud
fuente
1

Aquí hay una línea única de PowerShell que genera todos los servicios alojados en procesos 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

La versión más corta de una línea se ve así:

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