Question

Comment savoir quel processus écoute sur un port sous Windows ?

Était-ce utile?

La solution

PowerShell

Get-Process -Id (Get-NetTCPConnection -LocalPort portNumber).OwningProcess

cmd

 C:\> netstat -a -b

(Ajouter -n pour l'empêcher d'essayer de résoudre les noms d'hôte, ce qui le rendra beaucoup plus rapide.)

Notez la recommandation de Dane pour TCPView.Cela a l'air très utile !

-un Affiche toutes les connexions et ports d'écoute.

-b Affiche l'exécutable impliqué dans la création de chaque connexion ou port d'écoute.Dans certains cas, des exécutables bien connus hébergent plusieurs composants indépendants, et dans ces cas, la séquence de composants impliqués dans la création de la connexion ou du port d'écoute est affichée.Dans ce cas, le nom de l'exécutable est entre [] en bas, en haut se trouve le composant qu'il a appelé, et ainsi de suite jusqu'à ce que TCP/IP soit atteint.Notez que cette option peut prendre du temps et échouera si vous ne disposez pas des autorisations suffisantes.

-n Affiche les adresses et les numéros de port sous forme numérique.

-o Affiche l'ID du processus propriétaire associé à chaque connexion.

Autres conseils

Il existe une interface graphique native pour Windows :

  • Démarrer>>Tous les programmes>>Accessoires>>Outils système>>Resource Monitor

ou Courir resmon.exe, ou de Gestionnaire des tâches onglet performances

enter image description here

Utiliser TCPView si vous voulez une interface graphique pour cela.Il s'agit de l'ancienne application Sysinternals que Microsoft a rachetée.

netstat -aon | find /i "listening"

Le commutateur -b mentionné dans la plupart des réponses nécessite que vous disposiez de privilèges administratifs sur la machine.Vous n'avez pas vraiment besoin de droits élevés pour obtenir le nom du processus !

Recherchez le pid du processus en cours d'exécution dans le numéro de port (par exemple, 8080)

netstat -ano | findStr "8080"

Trouver le nom du processus par pid

tasklist /fi "pid eq 2216"

find process by TCP/IP port

Vous pouvez obtenir plus d'informations si vous exécutez la commande suivante :

netstat -aon |find /i "listening" |find "port"

l'utilisation de la commande 'Rechercher' vous permet de filtrer les résultats.find /i "écoute" affichera uniquement les ports qui sont "à l'écoute".Notez que vous avez besoin du /i pour ignorer la casse, sinon vous taperiez find "LISTENING".|find "port" limitera les résultats à ceux contenant le numéro de port spécifique.Notez qu'à ce sujet, il filtrera également les résultats contenant le numéro de port n'importe où dans la chaîne de réponse.

  1. Ouvrez une fenêtre d'invite de commande (en tant qu'administrateur) Dans la zone "Démarrer echercher", saisissez "cmd", puis faites un clic droit sur "cmd.exe" et sélectionnez "Exécuter en tant qu'administrateur".

  2. Saisissez le texte suivant puis appuyez sur Entrée.

    netstat -abno

    -un Affiche toutes les connexions et ports d'écoute.

    -b Affiche l'exécutable impliqué dans la création de chaque connexion ou port d'écoute.Dans certains cas, des exécutables bien connus hébergent plusieurs composants indépendants et, dans ces cas, la séquence de composants impliqués dans la création du port de connexion ou d'écoute est affichée.Dans ce cas, le nom exécutable est dans [] en bas, en haut est le composant qu'il a appelé, et ainsi de suite jusqu'à ce que TCP / IP soit atteint.Notez que cette option peut prendre du temps et échouera à moins que vous ayez suffisamment d'autorisations.

    -n Affiche les adresses et les numéros de port sous forme numérique.

    -o Affiche l'ID du processus propriétaire associé à chaque connexion.

  3. Recherchez le port sur lequel vous écoutez sous « Adresse locale »

  4. Regardez le nom du processus directement en dessous.

NOTE:Pour trouver le processus sous le Gestionnaire des tâches

  1. Notez le PID (identifiant de processus) à côté du port que vous regardez.

  2. Ouvrez le Gestionnaire des tâches Windows.

  3. Sélectionnez l'onglet Processus.

  4. Recherchez le PID que vous avez noté lorsque vous avez effectué le netstat à l'étape 1.

    • Si vous ne voyez pas de colonne PID, cliquez sur Afficher / Sélectionner les colonnes.Sélectionnez PID.

    • Assurez-vous que « Afficher les processus de tous les utilisateurs » est sélectionné.

Obtenir le PID et le nom de l'image

Utilisez une seule commande :

for /f "tokens=5" %a in ('netstat -aon ^| findstr 9000') do tasklist /FI "PID eq %a"

9000 doit être remplacé par votre numéro de port.

Le sortir contiendra quelque chose comme ceci :

Image Name                     PID Session Name        Session#    Mem Usage
========================= ======== ================ =========== ============
java.exe                      5312 Services                   0    130,768 K

Explication:

  • il parcourt chaque ligne à partir de la sortie de la commande suivante :

    netstat -aon | findstr 9000
    
  • de chaque ligne, le PID (%a - le nom n'a pas d'importance ici) est extrait (PID est le 5ème élément dans cette ligne) et passé à la commande suivante

    tasklist /FI "PID eq 5312"
    

Si tu veux sauter le entête et le retour du invite de commande, vous pouvez utiliser:

echo off & (for /f "tokens=5" %a in ('netstat -aon ^| findstr 9000') do tasklist /NH /FI "PID eq %a") & echo on

Sortir:

java.exe                      5312 Services                   0    130,768 K

Nous trouvons d’abord l’identifiant du processus de cette tâche particulière que nous devons éliminer afin d’obtenir un port libre.

taper
netstat -n -a -o

Après avoir exécuté cette commande dans l'invite de ligne de commande Windows (CMD), sélectionnez le PID que je pense que la dernière colonne supposait qu'il s'agit de 3312

Maintenant, tapez

taskkill /F /PID 3312

Vous pouvez maintenant vérifier en tapant la commande netstat.

NOTE:Parfois, Windows ne vous permet pas d'exécuter cette commande directement sur CMD, donc vous devez d'abord aller avec ces étapes à partir de Start-> Invite de commande (cliquez avec le bouton droit sur l'invite de commande et exécutez en tant qu'administrateur)

Il est très simple d'obtenir le numéro de port à partir du pid dans Windows.

Voici les étapes :

1) Allez dans Exécuter --> tapez cmd --> appuyez sur Entrée.

2) écrivez la commande suivante...

netstat -aon | findstr [port number]

(Note:N'incluez pas de crochets.)

3) appuyez sur Entrée...

4) Ensuite, cmd vous donnera le détail du service exécuté sur ce port avec le pid.

5) Ouvrez le gestionnaire de tâches, appuyez sur l'onglet service et faites correspondre le pid avec celui du cmd et c'est tout.

Pour obtenir une liste de tous les ID de processus propriétaires associés à chaque connexion :

netstat -ao |find /i "listening"

Si vous voulez tuer un processus, ayez l'identifiant et utilisez cette commande, pour que le port devienne libre

Taskkill /F /IM pidof a process

Ouvrez simplement un shell de commande et tapez :(en disant que votre port est 123456)

netstat -a -n -o | find "123456"

Vous verrez tout ce dont vous avez besoin

Les en-têtes sont :

 Proto  Local Address          Foreign Address        State           PID
 TCP    0.0.0.0:37             0.0.0.0:0              LISTENING       1111

c'est comme mentionné ici

Si vous souhaitez utiliser un outil GUI pour ce faire, il y a SysInternals TCPView.

Avec PowerShell 5 sur Windows 10 ou Windows Server 2016, exécutez Get-NetTCPConnection applet de commande.Je suppose que cela devrait également fonctionner sur les anciennes versions de Windows.

La sortie par défaut de Get-NetTCPConnection n'inclut pas l'ID de processus pour une raison quelconque et c'est un peu déroutant.Cependant, vous pouvez toujours l'obtenir en formatant la sortie.La propriété que vous recherchez est OwningProcess.

  • Si vous souhaitez connaître l'ID du processus qui écoute sur le port 443, exécutez cette commande :

    PS C:\> Get-NetTCPConnection -LocalPort 443 | Format-List
    
    LocalAddress   : ::
    LocalPort      : 443
    RemoteAddress  : ::
    RemotePort     : 0
    State          : Listen
    AppliedSetting :
    OwningProcess  : 4572
    CreationTime   : 02.11.2016 21:55:43
    OffloadState   : InHost
    
  • Formatez la sortie dans un tableau avec les propriétés que vous recherchez :

    PS C:\> Get-NetTCPConnection -LocalPort 443 | Format-Table -Property LocalAddress, LocalPort, State, OwningProcess
    
    LocalAddress LocalPort  State OwningProcess
    ------------ ---------  ----- -------------
    ::                 443 Listen          4572
    0.0.0.0            443 Listen          4572
    
  • Si vous souhaitez connaître le nom du processus, exécutez cette commande :

    PS C:\> Get-Process -Id (Get-NetTCPConnection -LocalPort 443).OwningProcess
    
    Handles  NPM(K)    PM(K)      WS(K)     CPU(s)     Id  SI ProcessName
    -------  ------    -----      -----     ------     --  -- -----------
    143      15     3448      11024              4572   0 VisualSVNServer
    

Pour savoir quel processus spécifique (PID) utilise quel port :

netstat -anon | findstr 1234

Où 1234 est le PID de votre processus.[Allez dans Gestionnaire des tâches -> onglet Services/Processus pour connaître le PID de votre application]

netstat -ao et netstat -ab vous indique l'application, mais si vous n'êtes pas administrateur, vous obtiendrez "L'opération demandée nécessite une élévation".

Ce n'est pas idéal, mais si vous utilisez sysinternals Process Explorer, vous pouvez accéder aux propriétés de processus spécifiques et consulter l'onglet TCP pour voir s'ils utilisent le port qui vous intéresse.C'est un peu une histoire d'aiguille et de botte de foin, mais peut-être que ça aidera quelqu'un...

Tapez la commande : netstat -aon | findstr :DESIRED_PORT_NUMBER

Par exemple, si je veux trouver le port 80 : netstat -aon | findstr :80

Cette réponse a été initialement publiée dans ce fil.

je recommande Ports courants de NirSoft.

CurrPorts peut filtrer les résultats affichés. TCPView n'a pas cette fonctionnalité.

Note:Vous pouvez cliquer avec le bouton droit sur la connexion socket d'un processus et sélectionner "Fermer les connexions TCP sélectionnées" (vous pouvez également le faire dans TCPView).Cela résout souvent les problèmes de connectivité que j'ai avec Outlook et Lync après avoir changé de VPN.Avec CurrPorts, vous pouvez également fermer les connexions depuis la ligne de commande avec le paramètre "/close".

Netstat

  • -a affiche tous les ports de connexion et d'écoute
  • -b affiche les exécutables
  • -n arrête de résoudre les noms d'hôtes (forme numérique)
  • -o processus de possession

    netstat -bano | findstr "7002"

    netstat -ano > ano.txt

Courants l'outil permet de rechercher et de filtrer

Suivez ces outils : - De cmd :- C:\> netstat -anob avec Administrateur privilège.

http://technet.microsoft.com/en-us/sysinternals/bb896653 - Explorateur de processus

http://technet.microsoft.com/en-us/sysinternals/bb896645 - Processus de vidage

http://technet.microsoft.com/en-us/sysinternals/bb896644 - Moniteur de ports

Tout sur sysinternals.com

Si vous souhaitez simplement connaître le processus en cours d'exécution et les threads sous chaque processus, je vous recommande de vous renseigner sur wmic.Merveilleux outil de ligne cmd, qui vous donne bien plus que ce que vous pouvez savoir.

Exemple :-

c:\> wmic process list brief /every:5

La commande ci-dessus affichera brièvement toute la liste des processus toutes les 5 secondes.Pour en savoir plus, vous pouvez simplement aller avec /? commande de Windows, par exemple,

c:\>wmic /?
c:\>wmic process /?
c:\>wmic prcess list /?

et ainsi de suite.:)

netstat -a -o Cela montre le PID du processus exécuté sur un port particulier.

Gardez à l’esprit l’identifiant du processus et accédez à l’onglet Gestionnaire de tâches et services ou détails et terminez le processus qui a le même PID.

Ainsi, vous pouvez tuer un processus exécuté sur un port particulier dans Windows.

Pour ceux qui utilisent Powershell, essayez Get-NetworkStatistics:

> Get-NetworkStatistics | where Localport -eq 8000


ComputerName  : DESKTOP-JL59SC6
Protocol      : TCP
LocalAddress  : 0.0.0.0
LocalPort     : 8000
RemoteAddress : 0.0.0.0
RemotePort    : 0
State         : LISTENING
ProcessName   : node
PID           : 11552

Utilisation de PowerShell...
...ce serait votre ami (remplacez 8080 par votre numéro de port) :

 netstat -abno | Select-String -Context 0,1 -Pattern 8080

Exemple de sortie

>   TCP    0.0.0.0:8080           0.0.0.0:0              LISTENING         2920
   [tnslsnr.exe]
>   TCP    [::]:8080              [::]:0                 LISTENING         2920
   [tnslsnr.exe]

Ainsi, dans cet exemple, tnslsnr.exe (base de données OracleXE) écoute sur le port 8080.

Explication rapide
Select-String est utilisé pour filtrer la longue sortie de netstat pour les lignes concernées.
-Pattern teste chaque ligne par rapport à une expression régulière.
-Context 0,1 produira 0 ligne de début et 1 ligne de fin pour chaque correspondance de modèle.

Par programmation, vous avez besoin d'éléments provenant de iphlpapi.h, Par exemple ObtenirTcpTable2().Des structures comme MIB_TCP6ROW2 contenir le PID du propriétaire.

Une solution sur une seule ligne qui m'aide est celle-ci, remplacez simplement 3000 par votre port

$P = Get-Process -Id (Get-NetTCPConnection -LocalPort 3000).OwningProcess; kill $P.Id

  1. Ouvrez le command prompt - start » run » cmd or start » All Programs » Accessories » Command Prompt.

  2. Taper

    netstat -aon | findstr '[port_number]'

Remplacez le [numéro_port] par le numéro de port réel que vous souhaitez vérifier et appuyez sur Entrée.

  1. Si le port est utilisé par une application, les détails de cette application seront affichés.Le numéro, affiché dans la dernière colonne de la liste, est le PID (ID de processus) de cette application.Prenez-en note.
  2. Taper

    tasklist | findstr '[PID]'

Remplacez le [PID] par le numéro de l'étape ci-dessus et appuyez sur Entrée.

  1. Le nom de l'application qui utilise votre numéro de port s'affichera.

Pour Windows, si vous souhaitez rechercher des éléments en écoute ou connectés au port 1234, exécutez ce qui suit à l'invite cmd :

netstat -na | find "1234"

Utilisez le script batch ci-dessous qui prend un nom de processus comme argument et donne une sortie netstat pour le processus.

@echo off
set procName=%1
for /f "tokens=2 delims=," %%F in ('tasklist /nh /fi "imagename eq %1" /fo csv') do call :Foo %%~F
goto End

:Foo
set z=%1
echo netstat for : "%procName%" which had pid "%1"
echo ----------------------------------------------------------------------

netstat -ano |findstr %z%
goto :eof

:End
Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top