Alguns programas não serão exibidos, a menos que você execute netstat
com o sudo. Compare essas duas execuções:
$ netstat -natp | grep tcp6
(Not all processes could be identified, non-owned process info
will not be shown, you would have to be root to see it all.)
tcp6 0 0 :::25 :::* LISTEN -
tcp6 0 0 :::445 :::* LISTEN -
tcp6 0 0 :::139 :::* LISTEN -
tcp6 0 0 :::22 :::* LISTEN
$ sudo netstat -natp | grep tcp6
[sudo] password for xieerqi:
tcp6 0 0 :::25 :::* LISTEN 1522/master
tcp6 0 0 :::445 :::* LISTEN 770/smbd
tcp6 0 0 :::139 :::* LISTEN 770/smbd
tcp6 0 0 :::22 :::* LISTEN 1190/sshd
Como para matar o processo ligado a uma porta em si, é um caso simples de analisar a saída de netstat
(que o awk pode fazer) e canalizar a saída desse comando para xargs -I {} kill -TERM {}
.
Veja como se pode analisar a saída com awk
. Por padrão o awk usa espaços para dividir a saída em campos, então eu tenho que percorrer todos os campos (por causa dos múltiplos espaços, o awk acha que há vários campos entre o texto real).
$ sudo netstat -natp | awk '/:53579/{sub(/\//," ");for(i=1;i<=NF;i++){\
> if($i~/ESTABLISHED/||/LISTEN/||/CLOSE WAIT/) print $(i+1)}}'
(Not all processes could be identified, non-owned process info
will not be shown, you would have to be root to see it all.)
5027
O resto será apenas
that_command_above | xargs -I {} kill -TERM {}