¿Cómo cerrar o (desvincular) un puerto dejado abierto por una aplicación no autorizada?

19

Estoy usando Fedora 13 64bit. Mi programa eclipse inicia un servidor en el puerto 9050 pero apago el programa, eclipse no puede apagar el servidor correctamente. Reiniciar el eclipse no tiene ningún efecto.

¿Cómo puedo cerrar o desvincular un puerto a la fuerza desde la línea de comandos?

Sé que reiniciar o cerrar sesión y volver a encender borrará los puertos, pero este proceso es mucho más lento para mí. Estoy buscando cerrar por la fuerza el puerto en la línea de comando.

marca
fuente

Respuestas:

10

La única forma de cerrar con fuerza un puerto de escucha es eliminar el proceso que está escuchando en él. Uso lsof, netstat, fuser- como root - para encontrar el ID del proceso. Una vez que el proceso finaliza (solo o al ser eliminado), el núcleo limpiará automáticamente todos los sockets que tenía abiertos. (Sin embargo, puede haber casos en los que se denegará la escucha de programas en el mismo puerto durante unos minutos; en este caso, todo lo que puede hacer es esperar).

usuario1686
fuente
19
lsof -n -i

Encuentra el proceso que estás buscando y mátalo.

Del lsofmanual :

-n Esta opción inhibe la conversión de números de red a nombres de host para archivos de red. La inhibición de la conversión puede hacer que lsof funcione más rápido. También es útil cuando la búsqueda de nombres de host no funciona correctamente.

-i [i] Esta opción selecciona la lista de archivos cuya dirección de Internet coincide con la dirección especificada en i. Si no se especifica una dirección, esta opción selecciona la lista de todos los archivos de Internet y de red x.25 (HP-UX).

La misma respuesta a esta pregunta , creo.

jonnyflash
fuente
77
Agregue | grep ":9050"(o cualquier número de puerto) para filtrar fácilmente la salida
isaacparrot
9

Puede usar el fusercomando con el -kinterruptor.

Por ejemplo, para cerrar el puerto 111, puede hacer lo siguiente: fuser -k 111/tcp (esto también le ahorra la molestia de encontrar la ID del proceso para matarlo como lo hace implícitamente el fusor)

Tenga en cuenta que algunos procesos se reinician automáticamente una vez cerrados. Para eso, debe verificar el archivo de configuración de cada proceso para encontrar una solución adecuada.

tony9099
fuente
-3

Tuve el mismo problema, solo busque el proceso que está escuchando ese puerto usando el comando cmd en Windows

netstat -a -b

entonces puedes cerrarlo con el administrador de tareas

daqop
fuente
2
Lo siento, he votado negativamente. Mencionas "en Windows". El parámetro "-b" para netstat, que muestra nombres ejecutables, es específico de Microsoft Windows. (Las variaciones de Unix netstat pueden tener una funcionalidad similar, pero normalmente no usa ese mismo parámetro). Sin embargo, la pregunta decía "Fedora", por lo que el que hizo esta pregunta estaba buscando información sobre Fedora 13 64bit, un sistema operativo diferente. La página de manual de netstat para Fedora indica que usar -pmuestra el PID (que se puede usar para identificar el nombre del ejecutable).
TOOGAM
1
Hay varios errores en esta respuesta. La respuesta contiene un error gramatical que podría haberse evitado. La respuesta tampoco es aplicable a Fedora, que se menciona claramente, en la primera oración de la pregunta. No es que la pregunta no contuviera esta información cuando se envió esta respuesta hace 30 minutos, la pregunta no se ha editado desde julio de 2011, hace casi 5 años. Así que estoy tomando esta respuesta por lo que es, una respuesta "yo también", que muy rara vez es realmente útil.
Ramhound