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 quandonetstat
gera a linha eps
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
mostraarg0
da sequência de execução do programa. - Nem todos os sistemas têm o comando
line
: se você substituirwhile l=($line)
pelo mais usualwhile read -r l
, isso ajustará os espaços iniciais e finais; Quando precisar retê-los, usewhile read -r
, com$REPLY
substituindo$l
(ouwhile read -r; do l="$REPLY"; ...
para um equivalente exato, com$l
inalterado). - O filtro funciona lendo uma linha de
netstat
, usandosed
para extrair o PID de qualquer sequência número / seqüência , em seguida, usandops -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 comwine
programs), mas ele terá o efeito colateral de compactar vários espaços em parâmetros para um único espaço.