Quero imprimir apenas as colunas de lsof
saída escolhidas
$1,$2,$3,$5,$8,$10
e usar uniq -c
na PID
coluna enquanto imprimimos todas as colunas iniciais de saída.
Estou no macOS. Estou usando awk
, sort
,uniq -c
Eu armazeno o endereço IP da minha máquina em uma variável:$ETH_IP
ETH_IP="192.168.10.191" && echo $ETH_IP
192.168.10.191
Este é meu comando atual com alguma formatação e seu resultado:
(lsof -alP -Ts -i @"$ETH_IP" -s TCP:ESTABLISHED,LISTEN,CLOSE_WAIT +c0 |sed 's|\\x20|_|g' |awk '{print $1,$2,$3,$5,$8,$10}' |column -t)
COMMAND PID USER TYPE NODE
Mail 668 501 IPv4 TCP (ESTABLISHED)
Mail 668 501 IPv4 TCP (ESTABLISHED)
Mail 668 501 IPv4 TCP (ESTABLISHED)
Mail 668 501 IPv4 TCP (ESTABLISHED)
Mail 668 501 IPv4 TCP (ESTABLISHED)
Mail 668 501 IPv4 TCP (ESTABLISHED)
Mail 668 501 IPv4 TCP (ESTABLISHED)
Mail 668 501 IPv4 TCP (ESTABLISHED)
Mail 668 501 IPv4 TCP (ESTABLISHED)
Mail 668 501 IPv4 TCP (ESTABLISHED)
Mail 668 501 IPv4 TCP (ESTABLISHED)
Mail 668 501 IPv4 TCP (ESTABLISHED)
Mail 668 501 IPv4 TCP (ESTABLISHED)
Mail 668 501 IPv4 TCP (ESTABLISHED)
Mail 668 501 IPv4 TCP (ESTABLISHED)
Mail 668 501 IPv4 TCP (ESTABLISHED)
Mail 668 501 IPv4 TCP (ESTABLISHED)
Mail 668 501 IPv4 TCP (ESTABLISHED)
GitHub_Desktop_Helper 1196 501 IPv4 TCP (ESTABLISHED)
GitHub_Desktop_Helper 1196 501 IPv4 TCP (ESTABLISHED)
com.apple.WebKit.Networking 12635 501 IPv4 TCP (ESTABLISHED)
com.apple.WebKit.Networking 12635 501 IPv4 TCP (ESTABLISHED)
com.apple.WebKit.Networking 12635 501 IPv4 TCP (ESTABLISHED)
com.apple.WebKit.Networking 12635 501 IPv4 TCP (ESTABLISHED)
com.apple.WebKit.Networking 12635 501 IPv4 TCP (ESTABLISHED)
com.apple.WebKit.Networking 12635 501 IPv4 TCP (ESTABLISHED)
com.apple.WebKit.Networking 12635 501 IPv4 TCP (ESTABLISHED)
com.apple.WebKit.Networking 12635 501 IPv4 TCP (ESTABLISHED)
com.apple.WebKit.Networking 12635 501 IPv4 TCP (ESTABLISHED)
com.apple.WebKit.Networking 12635 501 IPv4 TCP (ESTABLISHED)
com.apple.WebKit.Networking 12635 501 IPv4 TCP (ESTABLISHED)
com.apple.WebKit.Networking 12635 501 IPv4 TCP (ESTABLISHED)
com.apple.WebKit.Networking 12635 501 IPv4 TCP (ESTABLISHED)
com.apple.WebKit.Networking 12635 501 IPv4 TCP (ESTABLISHED)
Dropbox 74706 501 IPv4 TCP (ESTABLISHED)
Dropbox 74706 501 IPv4 TCP (ESTABLISHED)
Dropbox 74706 501 IPv4 TCP (ESTABLISHED)
DropboxFileProvider 74707 501 IPv4 TCP (ESTABLISHED)
DropboxFileProvider 74707 501 IPv4 TCP (ESTABLISHED)
DropboxFileProvider 74707 501 IPv4 TCP (ESTABLISHED)
Quero usar algo como | sort | uniq -c | sort -n
.
Usando o valor da coluna 2 (PID) para uniq
.
Uing awk
e manter a formatação como acima com várias colunas.
Então, há apenas uma listagem para cada processo com a quantidade de linhas originais listadas na frente da linha.
Uma maquete do que estou procurando.
COMMAND PID USER TYPE NODE
18 Mail 668 501 IPv4 TCP (ESTABLISHED)
2 GitHub_Desktop_Helper 1196 501 IPv4 TCP (ESTABLISHED)
2 Code_Helper 1493 501 IPv4 TCP (ESTABLISHED)
14 com.apple.WebKit.Networking 12635 501 IPv4 TCP (ESTABLISHED)
3 Dropbox 74706 501 IPv4 TCP (ESTABLISHED)
2 DropboxFileProvider 74707 501 IPv4 TCP (ESTABLISHED)
O problema que estou enfrentando é que a linha HEADER também está sendo contada poruniq -c
(lsof -alP -Ts -i @"$ETH_IP" -s TCP:ESTABLISHED,LISTEN,CLOSE_WAIT +c0 |sed 's|\\x20|_|g' |awk '{print $1,$2,$3,$5,$8,$10}' |column -t) | sort -k 2,2 | uniq -c | sort -n -k 3,3
1 COMMAND PID USER TYPE NODE
3 accountsd 667 501 IPv4 TCP (ESTABLISHED)
16 Mail 668 501 IPv4 TCP (ESTABLISHED)
2 GitHub_Desktop_Helper 1196 501 IPv4 TCP (ESTABLISHED)
12 com.apple.WebKit.Networking 12635 501 IPv4 TCP (ESTABLISHED)
2 Dropbox 74706 501 IPv4 TCP (ESTABLISHED)
2 DropboxFileProvider 74707 501 IPv4 TCP (ESTABLISHED)
A ideia vem deste comando e sua saída.
lsof -alP -Ts -i @"$ETH_IP" -s TCP:ESTABLISHED,LISTEN,CLOSE_WAIT +c0 | awk 'NR>2{print $1}' | sort | uniq -c | sort -n
1 CloudTelemetryService
1 cloudd
2 Dropbox
2 DropboxFileProvider
2 GitHub\x20Desktop\x20Helper
14 com.apple.WebKit.Networking
17 Mail
Isso meio que me dá o resultado que eu quero, mas é desajeitado. Se houver uma solução melhor/mais rápida, estou interessado nela.