Che cos'è svchost e perché sono in esecuzione più istanze?


27

Ci sono sei istanze in esecuzione sul mio desktop e probabilmente dieci su un server che gestisco. Cos'è questo ed è vitale per la funzione di sistema?


LOL. Ne ho 91 in esecuzione sul mio laptop!
Sen Jacob

Risposte:


16

svchost, ospita i servizi in Windows Vedi KB . Se usi Process Explorer puoi vedere quali servizi sono in esecuzione all'interno di un particolare processo.


1
Quindi questo è più o meno equivalente a inetd sotto Linux? Un framework di server generico, in modo che gli sviluppatori possano scrivere servizi senza preoccuparsi della porzione di server del codice?
Jason Tan,

Stesso tipo di idea Jason, ma ovviamente con una portata maggiore di inetd che generalmente sostiene solo compiti di tipo webbish, non è vero? Una bella analogia, sicuramente abbastanza vicina per contanti ...
Rob Moir,

20

Molti componenti di esecuzione di Windows sono implementati come servizi (vedere tutti i servizi sull'apertura della macchina Control Panel > Administrative Tools > Services). Si tratta di programmi specializzati in esecuzione in background. Non vengono avviati dall'utente che ha effettuato l'accesso, ma il mio stesso sistema operativo.

La maggior parte dei servizi non sono eseguibili autonomi (file EXE), ma sono implementati in librerie (DLL), che possono essere utilizzate eseguendo processi. Come suggerisce il nome, Svchost o "Service Host" è l'eseguibile standard di Windows per l'esecuzione di queste DLL. Puoi trovare il file svchost.exe nella %systemroot%\system32directory.

Se vuoi sapere quale istanza di svchost sta eseguendo quale servizio, digita

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

su una console della riga di comando (cmd).

Sulla macchina, dove ho creato lo screenshot, una delle istanze di svchost esegue 21 servizi diversi, ad esempio. Questo raggruppamento di servizi consente un migliore controllo e un debug più semplice, secondo la documentazione di Microsoft .

testo alternativo

I gruppi Svchost.exe sono identificati nella seguente chiave di registro:

HKEY_LOCAL_MACHINE\Software\Microsoft\WindowsNT\CurrentVersion\Svchost

Un suggerimento (se si esegue Windows Vista, Windows 7 o Windows Server 2008): è possibile aprire Task Manager e fare clic con il pulsante destro del mouse su un particolare processo svchost.exe, quindi scegliere l'opzione "Vai al servizio". Questo mostrerà la scheda Servizi , dove svchost.exesaranno contrassegnati tutti i servizi in esecuzione nel processo selezionato .

C'è un documento molto interessante nel Download Center di Microsoft:

Riferimenti ai servizi di sistema di Microsoft Windows Server 2003

Questo documento contiene riepiloghi di tutti i servizi disponibili per la famiglia di sistemi operativi Windows Server 2003. I servizi sono elencati in ordine alfabetico per nome visualizzato. A seguito di una descrizione di ciascun servizio, una tabella elenca le informazioni chiave sul servizio.

Ogni servizio di Windows è elencato con tutti i suoi dettagli. Si impara, ad esempio, che il nome del file eseguibile del servizio Servizi terminal è

 svchost.exe -k termsvcs 

+1 grazie per le informazioni .... tu e il tuo rappresentante da 8000 punti ... seriamente, questa è una grande risorsa da avere. Mi considero un esperto nella CLI di Win, ma non ne ero a conoscenza. Grazie!
cop1152,

7

Svchost è l'abbreviazione di "Service Host". Mantiene in esecuzione la maggior parte dei servizi sul tuo computer. Ci saranno alcuni servizi che si ospitano nel proprio file .exe, ma la maggior parte dei servizi di Windows deve essere ospitata all'interno di un processo svchost.exe. I servizi sulla tua macchina gestiscono cose importanti come rete, server RpC, audio, registro eventi ecc.

Digita "services.msc" in Start-> Esegui per visualizzare i servizi che hai in esecuzione sul tuo computer. Se ritieni che qualcuno sia inutile, puoi interrompere il servizio.

Digitare "tasklist / SVC" per vedere quali servizi sono ospitati dai diversi file svchost.exe.


1

Ecco un one-liner di PowerShell che genera tutti i servizi ospitati nei processi 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 versione più breve di un one-liner si presenta così:

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

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.