netstat com nome completo do comando (como no htop)

0

Estou executando alguns serviços diferentes via mono, cada um com sua própria porta, mas quando eu uso o netstat para verificar quais possuem uma porta atribuída e quais não foram, tudo que eu obtenho são 2 processos chamados "mono", não maneira de dizer qual é qual, além de olhar para o porto, que às vezes pode mudar.

É possível obter o netstat para mostrar o "comando" para cada porta, como o htop faz para processos?

Desta forma, posso dizer qual é o processo.

    
por Mint 22.05.2016 / 00:27

1 resposta

1

Demorou um pouco, mas consegui criar um filtro para anexar a lista de parâmetros do programa:

netstat -p | while l="$(line)";\
  do p="$(sed -En 's/^.*( [0-9]+)\/[^ ]*.*//gp'<<<"$l")";\
     [ "$p" == "" ] || p=" ## $(ps -p $p -o cmd=)";\
     echo "$l"$p;\
  done

Notas:

  • Obviamente, você não digitará isso toda vez: coloque o código do filtro em uma função ou script (caso em que as seqüências ;\ finais são desnecessárias).
  • Devido ao armazenamento em buffer quando netstat grava em um canal, há um atraso antes que o filtro inicie as linhas de processamento.
  • Pela mesma razão, existe a possibilidade de o programa terminar ou exec outro entre quando netstat gera a linha e ps recupera os argumentos para o PID.
  • O caminho do programa não será exibido se não tiver sido especificado quando o programa foi executado, pois ps mostra arg0 da sequência de execução do programa.
  • Nem todos os sistemas têm o comando line : se você substituir while l=($line) pelo mais usual while read -r l , isso ajustará os espaços iniciais e finais; Quando precisar retê-los, use while read -r , com $REPLY substituindo $l (ou while read -r; do l="$REPLY"; ... para um equivalente exato, com $l inalterado).
  • O filtro funciona lendo uma linha de netstat , usando sed para extrair o PID de qualquer sequência número / seqüência , em seguida, usando ps -p neste PID para encontrar os parâmetros de comando.
  • No final echo "$l"$p , o $p está fora das aspas: isso é para excluir espaços em branco à direita (também um problema com wine programs), mas ele terá o efeito colateral de compactar vários espaços em parâmetros para um único espaço.
por 22.05.2016 / 18:26

Tags