web-dev-qa-db-fra.com

Obtenir actuel TCP Count Connection sur un système

Au lieu de faire wc -l /proc/net/tcp, Y a-t-il un moyen plus rapide de le faire?

J'ai juste besoin d'un nombre total de connexions TCP.

22
daisy

Si vous souhaitez simplement obtenir le numéro et que vous n'avez pas besoin de détails, vous pouvez lire les données de /proc/net/sockstat{,6}. N'oubliez pas que vous devez combiner les deux valeurs pour obtenir le nombre absolu de connexions.

Si vous souhaitez obtenir les informations du noyau lui-même, vous pouvez utiliser NETLINK_INET_DIAG Pour obtenir les informations du noyau sans avoir à le lire de /proc

20
Ulrich Dangel

Une manière plus rapide? De cette façon produit une réponse dans une fraction d'une seconde, il faut en fait 0,009 secondes sur mon ordinateur!

Vous recherchez une manière qui nécessite moins de dactylographie? Dans ce cas, fixez un alias, par exemple

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

Vous pouvez maintenant simplement entrer dans l'aliasName, par exemple, tcpcount est ce que j'ai utilisé dans mon exemple, pour obtenir ce numéro.

Entrez la ligne ou l'ajoutez-le à votre .bstructrc afin que l'alias soit défini chaque fois que vous vous connectez.

Pour un grand nombre de connexions, les éléments suivants peuvent éventuellement courir un peu plus vite (et légèrement plus lent pour un très petit nombre de connexions):

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

Ou peut-être ...

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

Ces deux solutions supposent que "WC" n'est pas très optimale pour ne pas compter le nombre de lignes. Mes tests montrent que cette hypothèse est vraie.

La première fonctionne sur le principe que la commande queue est vraiment bonne pour éliminer les données inutiles, de sorte qu'elle compense la création d'une sous-coquille supplémentaire et de faire des travaux supplémentaires sur les variables d'environnement. Il exploite le fait que les lignes in/proc/net/TCP sont déjà numérotées pour éliminer la nécessité de compter les lignes. La solution finale suppose que l'AWK compte assez bien pour compenser tout inconvénient du fait de charger un programme plus important et de créer plusieurs processus. La solution AWK a l'avantage supplémentaire qu'il convient parfaitement à une simple définition d'alias à une ligne (ce qui donne des avantages supplémentaires en ce sens qu'il n'y a pas de script appelé, aucun processus supplémentaire de shell forcé, offrant un avantage supplémentaire de Mili-secondes.)

7
Johan