Un colega mío recientemente se encontró con un problema en el que un proceso que supuestamente había muerto todavía estaba vinculado a un puerto de red, evitando que otros procesos se vincularan a ese puerto. Específicamente, netstat -a -b
informaba que un proceso nombrado System
con PID 4476 tenía el puerto 60001 abierto, excepto que no existía ningún proceso con PID 4476, al menos por lo que pude ver.
Process Explorer y Task Manager no enumeraron PID 4476 (aunque hubo otro proceso nombrado System
con PID 4, que tenía su propio conjunto de conexiones TCP que no incluía 60001). taskkill /PID 4476
También informó que no se pudo encontrar el PID 4476.
¿Hay alguna manera de matar este misterioso proceso del Sistema para liberar el puerto al que está vinculado actualmente? ¿Qué puede hacer que esto suceda? ¿Cómo puede haber procesos que ninguno de Task Manager, Process Explorer y taskkill desconocen? El reinicio logró solucionar el problema, pero me gustaría saber si hay una manera de solucionarlo sin reiniciar.
Respuestas:
Sé que este es un hilo viejo, pero en caso de que alguien más tenga el mismo problema, tuve ...
Lo que puede estar sucediendo es que su proceso tenía un puerto TCP abierto cuando se bloqueó o salió de otro modo sin cerrarlo explícitamente. Normalmente, el sistema operativo limpia este tipo de cosas, pero solo cuando el registro del proceso desaparece. Si bien puede parecer que el proceso ya no se está ejecutando, hay al menos una cosa que puede mantener un registro del mismo, para evitar la reutilización de su PID. Esta es la existencia de un proceso hijo que no está separado del padre.
Si su programa generó algún proceso mientras se estaba ejecutando, intente matarlos. Eso debería liberar su registro de proceso y limpiar el puerto TCP. Aparentemente, Windows hace esto cuando se libera el registro, no cuando el proceso sale como esperaba.
fuente
¿Intentó usar TCPView y cerrar la conexión? No sé si mostrará la conexión en el escenario que estás describiendo, porque nunca me ha pasado eso. Pero es lo único en lo que puedo pensar si esto sucede nuevamente.
¿Cuál fue el proceso? ¿Fue software comercial o algo de cosecha propia? Parece que algunos troyanos utilizan el puerto 60001. Me pregunto si podría haber sido un rootkit o algo que pudiera ocultarse del sistema operativo. Es posible que desee darle a esa máquina una buena revisión con AV, tal vez algo de medios de arranque.
fuente
Abrir símbolo del sistema como administrador
*** Repita el paso 2 hasta que no haya más procesos secundarios
C: \ WINDOWS \ system32> proceso wmic donde (ParentProcessId = 1091) obtiene Caption, ProcessId
ID del proceso de subtítulos
cmd.exe 1328
2.a. C: \ WINDOWS \ system32> proceso wmic donde (ParentProcessId = 1328) obtiene Caption, ProcessId
2.b. repita esto hasta que no se encuentren más procesos secundarios
- Luego elimine todos los procesos secundarios
fuente
Me he enfrentado al mismo problema anteriormente, el comando netstat -a -n windows me dio la lista de puertos abiertos con ID de proceso. A partir de ahí, tomé el número de puerto que quería cerrar y luego lo cerré usando el software TCPView. Esto funcionó para mí.
fuente
Si es usuario de Windows, siga los pasos a continuación Paso 1: vaya a esta ruta: Panel de control \ Todos los elementos del Panel de control \ Herramientas administrativas
Paso 2: haga clic en servicios
Paso 3: Detenga la ejecución de servicios no deseados en el puerto deseado.
fuente
ps -ef | nombre de proceso grep
matar los procesos relacionados
matar -9 pid pid
Trabajado en mi caso
fuente