Cómo matar un proceso de Linux usando un número de puerto


¿Alguna vez se ha encontrado con una situación en la que necesita detener un proceso que se está ejecutando en un puerto específico de su máquina Linux?

Es posible que le preocupe que una aplicación que está ejecutando no funcione correctamente o esté acaparando los recursos de su red o la potencia de su CPU local. Una aplicación de este tipo podría incluso ser una amenaza a la seguridad que desee eliminar.

Cualquiera que sea el motivo, puedes usar los comandos fuser,lsofy netstatdesde la terminal (junto con kill) para ayudarle a encontrar y eliminar cualquier proceso de Linux utilizando un número de puerto. Estos comandos funcionarán en la mayoría de los sistemas operativos Linux, incluido Ubuntu.

Cómo finalizar un proceso de Linux utilizando el comando fusor

Una de las formas más sencillas de finalizar un proceso utilizando un número de puerto es utilizar el comando fuser. Este Comando de terminal de Linux puede enumerar o eliminar procesos que acceden a archivos o sockets. Si una aplicación se ejecuta con actividad de red (y por lo tanto utiliza un puerto abierto), probablemente esté haciendo una de estas dos cosas.

Antes de continuar, deberás asegurarte de que te sientes cómodo usando una terminal de línea de comandos en tu PC con Linux.

Para enumerar los procesos que utilizan un número de puerto usando fuser, puede utilizar la siguiente sintaxis:

fusor -n puerto de protocolo

En este ejemplo, protocolopuede ser tcpo udp, mientras que puertoes el número de puerto que desea verificar. Por ejemplo, para ver qué procesos utilizan el puerto TCP 80, puede ejecutar:

fusor -n tcp 80

Esto imprimirá los ID de proceso (PID) de los procesos que utilizan ese puerto.

Para finalizar esos procesos, puede agregar la opción -ka fuser. Esto enviará una señal SIGTERM a cada proceso, pidiéndoles que finalicen correctamente. Por ejemplo:

fusor -k -n tcp 80

Esto eliminará todos los procesos que utilicen el puerto TCP 80.

Si algunos procesos no responden a SIGTERM, puede usar -KILLen lugar de -k. Esto enviará una señal de interrupción (SIGKILL), que puede ayudar a forzar la finalización inmediata de los procesos actualmente en ejecución que ha identificado. Sin embargo, esto puede causar pérdida o corrupción de datos, así que utilícelo con precaución. Por ejemplo:.

fusor -KILL -n tcp 80

Esto eliminará forzosamente todos los procesos que utilicen el puerto TCP 80. Si tiene algún problema, ejecute estos comandos como superusuario (usando el comando sudo) o usando el usuario root.

Cómo finalizar un proceso de Linux usando el comando lsof

Otra forma de finalizar un proceso usando un número de puerto en una PC con Linux es usar el comandolsof. Este comando puede enumerar archivos y sockets abiertos en su sistema.

Para enumerar los procesos que utilizan un número de puerto específico, puede utilizar la siguiente sintaxis:

lsof -i protocolo:puerto

Como antes, protocolopuede ser tcpo udp, mientras que puertoes el número de puerto que desea controlar. Por ejemplo, para ver qué procesos utilizan el puerto TCP 53 (normalmente utilizado para solicitudes DNS), puede ejecutar este comando:

lsof -i tcp:53

Esto imprimirá información sobre cada proceso que utiliza ese puerto, incluido su PID.

Para finalizar esos procesos, puede utilizar la opción-tconlsof. Esto solo imprimirá los PID de los procesos sin ninguna otra información. Luego puede canalizar esta salida al comando killcon cualquier opción de señal. Por ejemplo:

matar $(lsof -t -i tcp:53)

Esto enviará señales SIGTERM (el valor predeterminado) a todos los procesos que utilizan el puerto TCP 53.

Si algunos procesos no responden a las señales SIGTERM como antes, puedes usar -9en lugar de nada después de kill. Esto enviará señales SIGKILL como antes, lo que las obligará a finalizar inmediatamente, pero también puede causar pérdida o corrupción de datos. Por ejemplo:

matar -9 $(lsof -t -i tcp:53)

Esto enviará con fuerza señales SIGKILL (el valor predeterminado) a todos los procesos que utilizan el puerto TCP 53.

Cómo cerrar un proceso de Linux usando el comando netstat

También puede utilizar el comando netstatpara rastrear los procesos en ejecución en su PC con Linux utilizando puertos de red activos y abiertos. netstat le permite ver conexiones de red y estadísticas en su sistema, lo que le permite identificar procesos problemáticos.

Para enumerar los procesos que utilizan un número de puerto junto con sus PID, debe agregar dos opciones: -p, que muestra los PID, y -l, que muestra únicamente tomas de escucha..

También debe especificar el protocolo (tcp, udp, etc.) y, opcionalmente, filtrar por estado (ESCUCHAR, etc.). Por ejemplo, para ver qué procesos TCP están escuchando en cualquier puerto, puede ejecutar:

netstat -p tcp -l

Esto imprimirá información sobre cada socket TCP que escucha en cualquier puerto, incluido su PID.

Para filtrar por puertos específicos, debes agregar otra opción: -n, que muestra direcciones numéricas en lugar de nombres. También debe especificar el formato de dirección exacto: [protocol][@hostname|hostaddr][:service|port].

Por ejemplo, para ver qué procesos TCP están escuchando en el puerto 80, puede ejecutar:

netstat -p tcp -l -n 80

Esto imprimirá información sobre cada socket TCP que escucha en el puerto 8080, incluido su PID.

Para eliminar esos procesos, puede usar el comando killcon cualquier opción de señal que desee y los PID que obtuvo de netstat. Por ejemplo:

matar 1234 5678

Esto enviará señales SIGTERM (el valor predeterminado) a procesos con PID 1234y 5678.

Si algunos procesos no responden a las señales SIGTERM como antes, puedes usar -9en lugar de nada después de kill. Esto enviará señales SIGKILL como antes, obligándolas a finalizar inmediatamente, pero puede causar pérdida o corrupción de datos como antes. Por ejemplo:

matar -9 1234 5678

Esto enviará señales SIGKILL a procesos con PID 1234y 5678con fuerza, por ejemplo. Reemplace 1234con el PID correcto para su proceso en ejecución.

Controle sus aplicaciones Linux

Gracias a los pasos descritos anteriormente, puedes finalizar rápidamente un proceso de Linux en ejecución usando un número de puerto usando la línea de comando de Linux. Recuerde tener cuidado al finalizar procesos, especialmente con señales SIGKILL, ya que pueden causar efectos secundarios no deseados; después de todo, no desea causar inestabilidad en el sistema.

¿Quiere observar más de cerca el rendimiento de su sistema en Linux? Es posible que desees verifique su uso de memoria en Linux a continuación. Si le preocupa un posible riesgo de seguridad, es posible que desee cambia tu contraseña en Linux también.

¿Necesita cambiar a una nueva distribución de Linux? Si eres principiante, Considere Linux Mint una alternativa segura y estable..

.

Artículos Relacionados:


2.04.2023