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
-k
interruptor para matar todos los procesos de coincidencia y-i
para matar de forma interactiva (solicitándote cada uno).Aquí hay una línea que muestra el comando a ejecutar:
Reemplace
echo
porsudo
para que el proceso sea realmente asesinado.fuente
echo
porsudo
80
.Tres opciones para la inclusión de los puertos abiertos se ofrecen en jsh 's
whatisonport
:Lo prefiero
netstat
porque 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
grep
en 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-l
connetstat
o conlsof
usar-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
lsof
usamos-P
para mostrar en:80
lugar de:http
hacer posible el grep. La-S 2
opción obligalsof
a 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
netstat
y luego decidir manualmente si se ejecuta o no:Ver también
Tengo otro script llamado
listopenports
que puede ser de interés.fuente
Ya descubriste qué proceso matar: es el número de proceso
20570
y su binario tiene el nombrehttpd
escrito al final de la línea de salida denetstat
. Puedes matarlo por númerokill 20570
o por nombre,killall httpd
pero 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
httpd
yman httpd
debe 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 Center
inferiorSystem
y 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-all
devuelve una lista de todos los servicios queservice
conoce y puede manejar. Un acceso directo para un reinicio de un servicio (que es: detener e iniciar en ese orden) esservice --full-restart SERVICE
laSERVICE
de ser el nombre del servicio, por ejemplo .:httpd
en el caso de Apache.La mayoría de los programas que encuentra
netstat
se 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
killall
sin explicación o advertencia.