Quero obter a quantidade total de TX e RX para saber a quantidade de dados que o servidor está recebendo ou transmitindo em um momento.
Com este comando ip -s link
eu recebo este resultado
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN mode DEFAULT group default qlen 1000
link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
RX: bytes packets errors dropped overrun mcast
21914963679042 3114955121 0 0 0 0
TX: bytes packets errors dropped carrier collsns
21914963679042 3114955121 0 0 0 0
2: enp3s0f0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc mq state UP mode DEFAULT group default qlen 1000
link/ether d4:5d:64:40:53:ca brd ff:ff:ff:ff:ff:ff
RX: bytes packets errors dropped overrun mcast
251928745868 1094612700 0 0 0 5914052
TX: bytes packets errors dropped carrier collsns
1091337709507 1328468566 0 0 0 0
3: enp3s0f1: <BROADCAST,MULTICAST> mtu 1500 qdisc noop state DOWN mode DEFAULT group default qlen 1000
link/ether d4:5d:64:40:53:cb brd ff:ff:ff:ff:ff:ff
RX: bytes packets errors dropped overrun mcast
0 0 0 0 0 0
TX: bytes packets errors dropped carrier collsns
0 0 0 0 0 0
Até onde eu sei, lo
é local. Então deve ser ignorado. Mas preciso pegar a soma de TX e RX das interfaces restantes. Como pode ser feito?
Obrigado.
Eu não sei se você precisa do
ifupdown
pacote instalado, mas você pode instalariftop
para lhe dar uma visão de rede ao vivo para as taxas atuais e outras coisas. Ele cobre a internet, bem como as conexões locais acontecendo.Você deve executá-lo com
sudo
Exemplo:
Ou você pode mostrar apenas uma interface específica como
bond0
Para obter a interface que está se comunicando com a internet é aquela que tem o gateway padrão preenchido. Você pode executar
netstat -rn
para mostrar todas as redes desse sistema. Abaixo podemos ver que meu gateway10.0.0.1
está nabond0
interface.Ou
ip route
(obrigado Doug :) ) mostrará as mesmas informações do gateway:Adicionando uma captura de tela aqui mostrando que há barras para mostrar quais aplicativos e qual TX ou RX é maior ou menor.
Você sai
iftop
pressionando um qou Ctrl+ Cno teclado.Este script imprime o número de internet, enp1s0, recebe e transmite bytes a cada 10 segundos no meu servidor linux de gateway/roteador principal para toda a minha LAN.
doug@s15:~/tmp$ cat internet_mon
Para obter os resultados apenas uma vez e sair, retire o loop e ajuste o tempo de suspensão para o que desejar. Você pode chamar esse script de algum aplicativo de nível superior e capturar a saída. Ou apenas faça a mesma coisa diretamente no aplicativo de nível superior.
Exemplo de execução:
E note que eu fiz o programa executável:
Se tudo o que você deseja é ver essas informações para monitoramento ou de forma pontual, você pode usar o
bmon
programa. É uma ferramenta interativa de monitoramento de rede.Você pode instalá-lo com o apt. E então execute
bmon
no seu terminal.Depois de executado, toque na
d
tecla para abrir a seção de detalhes e, com as setas, navegue até a interface desejada. O total de TX e RX aparecerá na coluna da esquerda.Se você quiser apenas imprimir esses 2 números e ignorar todo o resto, execute o bmon no modo "format" usando o seguinte comando:
Se você quiser a taxa atual em vez do total, você pode usar
A
-p
opção é a política para filtrar interfaces. No seu caso, você também usa assim:-p enp3s0f1,enp3s0f0
É assim que fica no meu sistema
Você pode usar outras variáveis de formatação para atender às suas necessidades. Você pode obter a lista de variáveis disponíveis passando
help
como opção de formato.