Un de mes collègues a récemment rencontré un problème dans lequel un processus supposé être mort était toujours lié à un port réseau, empêchant d'autres processus de se lier à ce port. Plus précisément, netstat -a -b
signalait-on qu'un processus nommé System
avec le PID 4476 avait le port 60001 ouvert, sauf qu'aucun processus avec le PID 4476 n'existait, du moins pour autant que je sache.
Process Explorer et Task Manager n'ont pas répertorié le PID 4476 (bien qu'un autre processus ait été nommé System
avec le PID 4, qui possède son propre jeu de connexions TCP n'incluant pas 60001). taskkill /PID 4476
a également signalé que le NID 4476 était introuvable.
Existe-t-il un moyen de supprimer ce processus mystérieux du système afin de libérer le port auquel il est actuellement lié? Qu'est-ce qui peut faire que cela se produise? Comment peut-il y avoir des processus dont aucun des gestionnaires de tâches, Explorateur de processus et tâches ne sait rien? Le redémarrage a permis de résoudre le problème, mais j'aimerais savoir s'il existe un moyen de résoudre ce problème sans redémarrer.
Réponses:
Je sais que c'est un vieux fil, mais au cas où quelqu'un d'autre aurait le même problème, j'avais ...
Ce qui peut arriver est que votre processus a eu un port TCP ouvert quand il est tombé en panne ou s'est arrêté autrement sans le fermer explicitement. Normalement, le système d'exploitation nettoie ce genre de choses, mais seulement lorsque l'enregistrement du processus disparaît. Bien que le processus ne semble plus fonctionner, il existe au moins une chose qui peut en garder une trace, afin d’empêcher la réutilisation de son PID. C'est l'existence d'un processus enfant qui n'est pas détaché du parent.
Si votre programme a généré des processus pendant son exécution, essayez de les tuer. Cela devrait entraîner la libération de son enregistrement de processus et le nettoyage du port TCP. Apparemment, Windows fait cela lorsque l'enregistrement est publié, pas lorsque le processus se termine comme je l'aurais prévu.
la source
Avez-vous essayé d'utiliser TCPView et de fermer la connexion? Je ne sais pas si cela montrera la connexion dans le scénario que vous décrivez, parce que cela ne m'est jamais arrivé. Mais c'est la seule chose à laquelle je peux penser si cela se reproduisait.
Quel était le processus - était-ce un logiciel commercial ou quelque chose de maison? Il semble que le port 60001 soit utilisé par certains chevaux de Troie. Je me demande s’il s’agissait d’un rootkit ou de quelque chose qui pourrait se cacher du système d’exploitation? Peut-être voudriez-vous donner à cette machine une bonne expérience avec AV, peut-être quelque chose d'un support amorçable.
la source
Ouvrez l'invite de commande en tant qu'administrateur
*** Répétez l'étape 2 jusqu'à ce qu'il n'y ait plus de processus enfant
C: \ WINDOWS \ system32> processus wmic où (ParentProcessId = 1091) obtenir la légende, ProcessId
Sous-titre ProcessId
cmd.exe 1328
2.a. C: \ WINDOWS \ system32> processus wmic où (ParentProcessId = 1328) obtenir la légende, ProcessId
2.b. Répétez cette opération jusqu'à ce qu'aucun autre processus enfant ne soit trouvé.
- Tuez ensuite tous les processus enfants
la source
J'ai déjà rencontré le même problème plus tôt, la commande netstat -a -n windows m'a donné la liste des ports ouverts avec l'ID de processus. À partir de là, j'ai identifié le numéro de port pour lequel je voulais fermer la connexion, puis j'ai fermé cette connexion à l'aide du logiciel TCPView. Cela a fonctionné pour moi.
la source
Si vous êtes un utilisateur Windows, suivez les étapes ci-dessous Étape 1: Accédez à ce chemin: Panneau de configuration \ Tous les éléments du panneau de configuration \ Outils d'administration
Étape 2: Cliquez sur les services
Étape 3: Arrêtez les services indésirables s'exécutant sur le port souhaité.
la source
ps -ef | grep nomprocessus
tuer les processus liés
tuer -9 pid pid
A travaillé dans mon cas
la source