GNU/Linux >> Tutoriales Linux >  >> Linux

¿Cómo elimino una conexión de enchufe CLOSE_WAIT?

CLOSE_WAIT significa que su programa aún se está ejecutando y no ha cerrado el socket (y el kernel está esperando que lo haga). Agregar -p a netstat para obtener el pid y luego matarlo con más fuerza (con SIGKILL si es necesario). Eso debería deshacerte de tu CLOSE_WAIT enchufes También puedes usar ps para encontrar el pid.

SO_REUSEADDR es para servidores y TIME_WAIT enchufes, por lo que no se aplica aquí.


Puede cerrar sockets a la fuerza con ss dominio; el ss El comando es una herramienta que se utiliza para volcar estadísticas de socket y muestra información de manera similar (aunque más simple y rápida) a netstat.

Para eliminar cualquier socket en estado CLOSE_WAIT, ejecute esto (como root)

$ ss --tcp state CLOSE-WAIT --kill

También puede filtrar su acción

$ ss --tcp state CLOSE-WAIT '( dport = 22 or dst 1.1.1.1 )' --kill

Como lo describe Crist Clark.

CLOSE_WAIT significa que el extremo local de la conexión ha recibido un FIN del otro extremo, pero el sistema operativo está esperando que el programa en el extremo local realmente cierre su conexión.

El problema es que su programa que se ejecuta en la máquina local no está cerrando el socket. No es un problema de ajuste de TCP. Una conexión puede (y muy correctamente) permanecer en CLOSE_WAIT para siempre mientras el programa mantiene abierta la conexión.

Una vez que el programa local cierra el zócalo, el sistema operativo puede enviar el FIN al extremo remoto que lo transfiere a LAST_ACK mientras espera el ACK del FIN. Una vez que se recibe, la conexión finaliza y se elimina de la tabla de conexiones (si su final está en CLOSE_WAIT, no terminar en el estado TIME_WAIT).


Linux
  1. ¿Cómo desinstalar Sbt?

  2. ¿Cómo quitar telegrama?

  3. Cómo:Programación de sockets en Python

  4. Cómo destruir completamente una conexión de socket en C

  5. Cómo eliminar todos los contenedores de Docker

Cómo eliminar un alias de dominio

Cómo quitar (eliminar) directorio en Linux

Cómo quitar (eliminar) enlaces simbólicos en Linux

Cómo quitar un comando del historial en Linux

Cómo eliminar el repositorio remoto de Git

Cómo eliminar contenedores Docker