Processo de execução em execução na porta 80

14

Este é o processo que eu quero matar:

sooorajjj@Treako ~/Desktop/MerkMod $ sudo netstat -tunap | grep :80
tcp6    0   0 :::80   :::*     LISTEN    20570/httpd
Sooraj S
fonte

Respostas:

31

Existem várias maneiras de descobrir qual processo em execução está usando uma porta.

Usando o fusor, ele fornece o (s) PID (s) das várias instâncias associadas à porta de escuta.

sudo apt-get install psmisc
sudo fuser 80/tcp

80/tcp:               1858  1867  1868  1869  1871

Depois de descobrir, você pode parar ou matar o (s) processo (s).

Você também pode encontrar os PIDs e mais detalhes 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 os soquetes que escutam na porta 80 (em oposição aos clientes que se conectam à porta 80):

sudo lsof -i tcp:80 -s tcp:listen

Para matá-los automaticamente:

sudo lsof -t -i tcp:80 -s tcp:listen | sudo xargs kill
Rui F Ribeiro
fonte
1
Gostaria de ressaltar que o fusor também tem a -kopção de eliminar todos os processos correspondentes e -imatar de forma interativa (solicitando cada um deles).
A.Wilcox
7

Aqui está um oneliner que mostra o comando a ser executado:

echo kill $(sudo netstat -anp | awk '/ LISTEN / {if($4 ~ ":80$") { gsub("/.*","",$7); print $7; exit } }')

Substitua echopor sudopara que o processo realmente seja eliminado.

jlliagre
fonte
Substituir echoporsudo
EliuX
Esta é a resposta perfeita para substituir o número da porta 80.
Youssof H. 31/10/19
4

Três opções para listar portas abertas são oferecidas no jsh 's whatisonport:

netstat -anp --numeric-ports | grep ":${PORT}\>.*:" 

fuser -v "${PORT}"/tcp

lsof -P -S 2 -i "tcp:${PORT}" | grep "\(:${PORT}->.*:\|:$PORT (LISTEN)$\)"

Eu prefiro netstatporque é rápido, conciso e pode listar portas abertas por outros usuários. (Embora ainda seja necessário privilégios de superusuário / usuário para listar os nomes e PIDs de tais processos.)

Saídas

$ netstat -anp --numeric-ports | grep ":80\>.*:" 
tcp6       0      0 :::80           :::*            LISTEN      1914/apache2    

$ fuser -v "80/tcp"
                     USER        PID ACCESS COMMAND
80/tcp:              root       1914 F.... apache2
                     www-data  12418 F.... apache2
...

$ lsof -P -S 2 -i "tcp:80" | grep "\(:80->.*:\|:80 (LISTEN)$\)"
apache2  1914     root    4u  IPv6   11920      0t0  TCP *:80 (LISTEN)
apache2 12418 www-data    4u  IPv6   11920      0t0  TCP *:80 (LISTEN)
...

O uso de grepem dois casos é corresponder apenas à porta no lado local e pular conexões abertas para uma porta remota 80. (Uma alternativa seria usar -lcom netstatou com lsofusar -sTCP:LISTEN, mas eu gosto dos greps acima porque eles também capturam conexões de saída da porta fornecida, o que pode ocasionalmente ser interessante.)

Com lsofusamos -Ppara exibir em :80vez de :httptornar possível o grep. A -S 2opção obriga lsofa ser concluída em tempo hábil.

Matando o processo

Supondo que desejamos usar netstat, poderíamos pegar os PIDs assim:

$ netstat -anp --numeric-ports | grep ":80\>.*:" | grep -o "[0-9]*/" | sed 's+/$++'
1914
...

E podemos até passar esses PIDs para kill:

... | xargs -d '\n' kill -KILL

No entanto, geralmente há um potencial de falso positivo ao usar regexps, portanto, recomendo apenas examinar a saída inicial netstate decidir manualmente se deseja executar:

$ kill -KILL 1914

Veja também

Eu tenho outro script chamado listopenportsque pode ser do seu interesse.

joeytwiddle
fonte
3

Você já descobriu qual processo matar: é o número do processo 20570e seu binário possui o nome httpdconforme escrito no final da linha de saída de netstat. Você pode matá-lo por número kill 20570ou nome, killall httpdmas eu não recomendaria fazê-lo dessa maneira.

Portas inferiores a 1024 têm um uso padronizado (normalmente), você pode procurar essas e muitas outras less /etc/services. A entrada para a porta 80 é até comentada:

http            80/tcp          www             # WorldWideWeb HTTP

Portanto, é provavelmente um servidor da web. O nome que você tem é httpde man httpddeve lhe dar a grande dica de que é o binário Apache que se encaixa. O Apache é um dos grandes players, possui alguns programas de gerenciamento confortáveis ​​disponíveis, mas você não precisa deles para uma simples ação de iniciar / parar.

Você tem hortelã? Com uma área de trabalho normal? Então, olhe Control Centerabaixo Systeme clique Services. Você precisa ser administrador para fazer qualquer coisa lá. Role para baixo até encontrar algo rotulado como "servidor da web" (eu tenho o lighttpd em vez do Apache e não sei exatamente como seria a entrada do Apache) e desmarque-o.

Se você quiser apenas parar temporariamente, tente, no console

sudo service stop httpd

e comece com sudo service start httpd. service --status-allretorna uma lista de todos os serviços que serviceconhece e pode manipular. Um atalho para um reinício de um serviço (isto é: parar e iniciá-lo nessa ordem) é service --full-restart SERVICEcom SERVICEsendo o nome do serviço, por exemplo .: httpdem caso de Apache.

A maioria dos programas encontrados netstatpode ser tratada dessa maneira. Alguns não podem e outros nem sequer têm uma página de manual, mas são raros.

deamentiaemundi
fonte
0

Existe uma maneira simples de fazer isso. Primeiro verifique qual processo está usando a porta 80 pelo netstat :

netstat -ntl | grep 80

Agora você tem o nome do processo e matar o processo com o killall comando:

killall -9 process name
Amit Singh
fonte
Quais são os perigos de usar o comando 'killall'?
Peter Mortensen
2
-1 para killallsem explicação ou aviso.
precisa saber é o seguinte
1
Existem vários problemas com o killall. Além de poder ajoelhar um sistema em caso de problema, também pode matar várias instâncias de um processo que não está associado à porta. Além disso, o maior problema do killall é que, se alguém em uma caixa Solaris tenta usá-lo, ele mata todos os processos em execução.
Rui F Ribeiro