Respuestas:
Si solo desea obtener el número y no necesita ningún detalle, puede leer los datos /proc/net/sockstat{,6}
. Tenga en cuenta que debe combinar ambos valores para obtener el recuento absoluto de conexiones.
Si desea obtener la información del núcleo mismo, puede utilizarla NETLINK_INET_DIAG
para obtener la información del núcleo sin tener que leerla./proc
¿Una forma más rápida? De esa manera, produce una respuesta en una fracción de segundo, de hecho, ¡toma 0.009 segundos en mi computadora!
¿Estás buscando una forma que requiera menos tipeo? En ese caso, establezca un alias, por ejemplo
alias tcpcount="wc -l /proc/net/tcp"
Ahora puede ingresar el aliasname, por ejemplo, tcpcount
es lo que usé en mi ejemplo, para obtener este número.
Ingrese la línea o agréguela a su .bashrc para que el alias se defina cada vez que inicie sesión.
Para un gran número de conexiones, lo siguiente puede ejecutarse un poco más rápido (y un poco más lento para un número muy pequeño de conexiones):
#!/bin/bash
/usr/bin/tail -1 /proc/net/tcp | (IFS=:
read COUNT DISCARD
echo $COUNT
)
O tal vez ...
awk 'END {print NR}' /proc/net/tcp
Ambas soluciones suponen que "wc" no es muy óptimo para contar el número de líneas. Mi prueba muestra que esta suposición es cierta.
El primero funciona bajo la premisa de que el comando tail es realmente bueno para descartar datos innecesarios, tanto que compensa la creación de un sub-shell adicional y hace un trabajo adicional en las variables de entorno. Aprovecha el hecho de que las líneas en / proc / net / tcp ya están numeradas para eliminar la necesidad de contar las líneas. La solución final supone que awk cuenta lo suficientemente bien como para compensar cualquier desventaja debido a la carga de un programa más grande frente a la creación de múltiples procesos. La solución awk tiene el beneficio adicional de que encaja perfectamente en una simple definición de alias de una línea (que brinda beneficios adicionales porque no se llama script, por lo tanto no hay procesos de shell adicionales bifurcados, lo que brinda una ventaja adicional de milisegundos).
/proc/net/tcp
. Puede intentarlo netstat -n -t | wc -l
, pero supongo que netstat también lee/proc/net/tcp
netstat -nt
con aproximadamente 180,000 conexiones. No veo ninguna razón por la que debería ser tan lento ... (la lectura /proc/net/tcp
también es muy lenta)
awk
enfoque es lamentablemente más lento que wc
. tail
parece estar a la par con wc
.
Use el ss -s
comando para obtener la respuesta detallada.
ss -s