Um colega meu recentemente encontrou um problema em que um processo que supostamente havia morrido ainda estava vinculado a uma porta de rede, impedindo que outros processos se ligassem a essa porta. Especificamente, netstat -a -b
estava relatando que um processo nomeado System
com o PID 4476 tinha a porta 60001 aberta, exceto que não existia nenhum processo com o PID 4476, pelo menos até onde eu sabia.
O Process Explorer e o Gerenciador de Tarefas não listaram o PID 4476 (embora houvesse outro processo nomeado System
com o PID 4, que tinha seu próprio conjunto de conexões TCP que não incluíam 60001). taskkill /PID 4476
também relatou que o PID 4476 não foi encontrado.
Existe uma maneira de matar esse misterioso processo do sistema para liberar a porta à qual está atualmente vinculada? O que pode causar isso? Como pode haver processos que nenhum dos Gerenciador de Tarefas, Process Explorer e taskkill conhecem? A reinicialização conseguiu corrigir o problema, mas eu gostaria de saber se há uma maneira de corrigir isso sem reiniciar.
Respostas:
Eu sei que esse é um tópico antigo, mas no caso de alguém ter o mesmo problema, eu tinha ...
O que pode estar acontecendo é que o seu processo teve uma porta TCP aberta quando travou ou saiu sem fechá-la explicitamente. Normalmente, o sistema operacional limpa esses tipos de coisas, mas somente quando o registro do processo desaparece. Embora o processo pareça não estar mais em execução, há pelo menos uma coisa que pode manter um registro, para evitar a reutilização do seu PID. Essa é a existência de um processo filho que não é desanexado do pai.
Se o seu programa gerou algum processo enquanto estava em execução, tente matá-lo. Isso deve fazer com que seu registro de processo seja liberado e a porta TCP seja limpa. Aparentemente, o Windows faz isso quando o registro é lançado, não quando o processo é encerrado como eu esperava.
fonte
Você tentou usar o TCPView e fechar a conexão? Não sei se ele mostrará a conexão no cenário que você está descrevendo, porque nunca aconteceu isso comigo. Mas é a única coisa em que consigo pensar se isso acontecer novamente.
Qual foi o processo - foi um software comercial ou algo caseiro? Parece que a porta 60001 é usada por alguns Trojans - eu me pergunto se poderia ter sido um rootkit ou algo que poderia se esconder do sistema operacional? Pode querer dar uma boa olhada nessa máquina com o AV, talvez algo da mídia inicializável.
fonte
Abrir prompt de comando como administrador
*** Repita a etapa 2 até que não haja mais processo filho
C: \ WINDOWS \ system32> processo wmic, em que (ParentProcessId = 1091) obtém Caption, ProcessId
ProcessId da legenda
cmd.exe 1328
2.a. C: \ WINDOWS \ system32> processo wmic em que (ParentProcessId = 1328) obtém Caption, ProcessId
2.b. repita isso até que nenhum outro processo filho seja encontrado
- Então mate todos os processos filhos
fonte
Já enfrentei o mesmo problema anteriormente, o comando netstat -a -n windows me deu a lista de portas abertas com o ID do processo. A partir daí, peguei o número da porta que desejava fechar a conexão e fechei a conexão usando o software TCPView. Isso funcionou para mim.
fonte
Se você é usuário do Windows, siga as etapas abaixo: Etapa 1: Vá para este caminho: Painel de Controle \ Todos os Itens do Painel de Controle \ Ferramentas Administrativas
Etapa 2: clique em serviços
Etapa 3: Interrompa os serviços indesejados em execução na porta desejada.
fonte
ps -ef | grep processname
mate os processos relacionados
matar -9 pid pid
Trabalhou no meu caso
fonte