linux – Cerrar manualmente un puerto desde la línea de comandos

Pregunta:

Quiero cerrar un puerto abierto que está en modo de escucha entre mi cliente y la aplicación del servidor.

¿Existe alguna opción de línea de comando manual en Linux para cerrar un puerto?

NOTA: Llegué a saber que "solo la aplicación propietaria del socket conectado debe cerrarlo, lo que sucederá cuando finalice la aplicación".

No entiendo por qué solo es posible mediante la aplicación que lo abre … Pero todavía estoy ansioso por saber si hay alguna otra forma de hacerlo.

Respuesta:

Tuve el mismo problema, el proceso debe mantenerse vivo pero el socket debe cerrarse. Cerrar un socket en un proceso en ejecución no es imposible, pero sí difícil:

  1. localizar el proceso:

     netstat -np

    Obtiene una source/destination ip:port portstate pid/processname mapa

  2. localizar el descriptor de archivo del socket en el proceso

     lsof -np $pid

    Obtiene una lista: nombre de proceso, pid, usuario, fileDescriptor, … una cadena de conexión.

    Busque el número de fileDescriptor correspondiente para la conexión. Será algo así como "97u" que significa "97".

  3. Ahora conecta el proceso:

     gdb -p $pid
  4. Ahora cierra el enchufe:

     call close($fileDescriptor) //does not need ; at end.

    ejemplo:

     call close(97)

    Luego separe gdb:

     quit

    Y el enchufe está cerrado.

Leave a Comment

Your email address will not be published. Required fields are marked *

web tasarım