Obtendo a contagem atual de conexões TCP em um sistema

19

Em vez de fazer wc -l /proc/net/tcp , existe uma maneira mais rápida de fazer isso?

Eu só preciso de uma contagem total de conexões tcp.

    
por daisy 07.03.2013 / 08:00

2 respostas

16

Se você quiser apenas obter o número e não precisar de nenhum detalhe, poderá ler os dados de /proc/net/sockstat{,6} . Lembre-se de que você precisa combinar os dois valores para obter a contagem absoluta de conexões.

Se você deseja obter as informações do próprio kernel, você pode usar NETLINK_INET_DIAG para obter as informações do kernel sem ter que lê-las em /proc

    
por 07.03.2013 / 11:23
5

Um caminho mais rápido? Dessa forma, produz uma resposta em uma fração de segundo, na verdade, leva 0,009 segundos no meu computador!

Você está procurando uma maneira que requer menos digitação? Nesse caso, defina um alias, por exemplo,

alias tcpcount="wc -l /proc/net/tcp"

Agora você pode inserir o aliasname, por exemplo, tcpcount é o que eu usei no meu exemplo para obter esse número.

Digite a linha ou adicione-a ao seu .bashrc para que o alias seja definido sempre que você efetuar login.

Para um grande número de conexões, o seguinte pode ser executado um pouco mais rápido (e um pouco mais lento para um número muito pequeno de conexões):

#!/bin/bash
/usr/bin/tail -1 /proc/net/tcp | (IFS=:
read COUNT DISCARD
echo $COUNT
)

Ou talvez ...

awk 'END {print NR}' /proc/net/tcp

Ambas as soluções assumem que "wc" não é muito ideal apenas para contar o número de linhas. Meu teste mostra que essa suposição é verdadeira.

O primeiro trabalha na premissa de que o comando tail é muito bom em descartar dados desnecessários, tanto que compensa a criação de um sub-shell extra e fazer um trabalho extra em variáveis de ambiente. Isso alavanca o fato de que as linhas em / proc / net / tcp já estão numeradas para eliminar a necessidade de contar as linhas. A solução final assume que o awk conta bem o suficiente para compensar qualquer desvantagem devido ao carregamento de um programa maior versus a criação de vários processos. A solução awk tem o benefício adicional de se encaixar perfeitamente em uma simples definição de alias de uma linha (o que oferece benefícios adicionais, pois não há script chamado, portanto, nenhum processo extra de shell é bifurcado, oferecendo vantagem adicional de milissegundos). >     

por 07.03.2013 / 08:09