Este es el proceso que quiero matar:
sooorajjj@Treako ~/Desktop/MerkMod $ sudo netstat -tunap | grep :80
tcp6    0   0 :::80   :::*     LISTEN    20570/httpd
Hay varias formas de encontrar qué proceso en ejecución está utilizando un puerto.
Al usar el fusor, proporcionará los PID de las múltiples instancias asociadas con el puerto de escucha.
sudo apt-get install psmisc
sudo fuser 80/tcp
80/tcp:               1858  1867  1868  1869  1871
Después de descubrirlo, puede detener o eliminar los procesos.
También puede encontrar los PID y más detalles usando lsof
sudo lsof -i tcp:80
COMMAND  PID     USER   FD   TYPE DEVICE SIZE/OFF NODE NAME  
nginx   1858     root    6u  IPv4   5043      0t0  TCP ruir.mxxx.com:http (LISTEN)  
nginx   1867 www-data    6u  IPv4   5043      0t0  TCP ruir.mxxx.com:http (LISTEN)  
nginx   1868 www-data    6u  IPv4   5043      0t0  TCP ruir.mxxx.com:http (LISTEN)  
nginx   1869 www-data    6u  IPv4   5043      0t0  TCP ruir.mxxx.com:http (LISTEN)  
nginx   1871 www-data    6u  IPv4   5043      0t0  TCP ruir.mxxx.com:http (LISTEN)  
Para limitar a los sockets que escuchan en el puerto 80 (a diferencia de los clientes que se conectan al puerto 80):
sudo lsof -i tcp:80 -s tcp:listen
Para matarlos automáticamente:
sudo lsof -t -i tcp:80 -s tcp:listen | sudo xargs kill
-kinterruptor para matar todos los procesos de coincidencia y-ipara matar de forma interactiva (solicitándote cada uno).Aquí hay una línea que muestra el comando a ejecutar:
Reemplace
echoporsudopara que el proceso sea realmente asesinado.fuente
echoporsudo80.Tres opciones para la inclusión de los puertos abiertos se ofrecen en jsh 's
whatisonport:Lo prefiero
netstatporque es rápido, conciso y puede enumerar puertos abiertos por otros usuarios. (Aunque todavía necesitará privilegios de superusuario / usuario para enumerar los nombres y los PID de dichos procesos).Salidas
El uso de
grepen dos casos es hacer coincidir solo el puerto en el lado local y omitir las conexiones abiertas a un puerto remoto 80. (Una alternativa sería usar-lconnetstato conlsofusar-sTCP:LISTEN, pero me gustan los greps anteriores porque lo harán también captura conexiones salientes desde el puerto dado, lo que ocasionalmente puede ser de interés).Con
lsofusamos-Ppara mostrar en:80lugar de:httphacer posible el grep. La-S 2opción obligalsofa completar de manera oportuna.Matando el proceso
Suponiendo que queremos usar
netstat, podríamos tomar los PID de esta manera:E incluso podríamos pasar esos PID a
kill:Sin embargo, a menudo existe la posibilidad de falsos positivos cuando se utilizan expresiones regulares, por lo que recomendaría simplemente mirar la salida inicial de
netstaty luego decidir manualmente si se ejecuta o no:Ver también
Tengo otro script llamado
listopenportsque puede ser de interés.fuente
Ya descubriste qué proceso matar: es el número de proceso
20570y su binario tiene el nombrehttpdescrito al final de la línea de salida denetstat. Puedes matarlo por númerokill 20570o por nombre,killall httpdpero no recomendaría hacerlo de esa manera.Los puertos inferiores a 1024 tienen un uso estandarizado (normalmente), puede buscarlos con muchos otros
less /etc/services. La entrada para el puerto 80 incluso se comenta:Por lo tanto, es muy probable que sea un servidor web. El nombre que tiene es
httpdyman httpddebe darle la gran pista de que es el binario de Apache el que se ajusta. Apache es uno de los grandes actores, tiene algunos programas de administración cómodos disponibles, pero no los necesita para una simple acción de inicio / detención.Tienes menta? Con un escritorio normal? Luego mira en la parte
Control CenterinferiorSystemy haz clicServices. Debes ser administrador para hacer cualquier cosa allí. Desplácese hacia abajo hasta que encuentre algo etiquetado como "servidor web" (tengo lighttpd en lugar de Apache y no sé exactamente cómo se vería la entrada de Apache) y desactívela.Si solo quieres detenerlo temporalmente, prueba en la consola
y comenzar con
sudo service start httpd.service --status-alldevuelve una lista de todos los servicios queserviceconoce y puede manejar. Un acceso directo para un reinicio de un servicio (que es: detener e iniciar en ese orden) esservice --full-restart SERVICElaSERVICEde ser el nombre del servicio, por ejemplo .:httpden el caso de Apache.La mayoría de los programas que encuentra
netstatse pueden manejar de esa manera. Algunos no pueden y otros ni siquiera tienen una página de manual, pero son raros.fuente
Hay una manera simple de hacer esto. Primero verifique qué proceso está usando el puerto 80 de netstat :
Ahora tiene el nombre del proceso y elimine el proceso con el comando killall :
fuente
killallsin explicación o advertencia.