Yanıtlar:
Sadece numarayı almak istiyorsanız ve hiçbir ayrıntıya gerek duymuyorsanız, verileri okuyabilirsiniz /proc/net/sockstat{,6}
. Mutlak bağlantı sayısını elde etmek için her iki değeri de birleştirmeniz gerektiğini lütfen unutmayın.
Eğer bilgiyi çekirdeğin kendisinden almak istiyorsanız NETLINK_INET_DIAG
, bilgiyi okumak zorunda kalmadan çekirdeğin bilgisini almak için kullanabilirsiniz ./proc
Daha hızlı bir yol mu? Bu yol saniyeler içinde cevap veriyor, aslında bilgisayarımda 0.009 saniye sürüyor!
Daha az yazma gerektiren bir yol mu arıyorsunuz? Bu durumda bir takma isim belirleyin, örn.
alias tcpcount="wc -l /proc/net/tcp"
Şimdi sadece takma adı girebilirsiniz, örneğin tcpcount
bu numarayı almak için örneğimde kullandığım şey.
Satırı girin veya .bashrc'nize ekleyin, böylece takma ad her giriş yaptığınızda tanımlanır.
Çok sayıda bağlantı için aşağıdakiler muhtemelen biraz daha hızlı çalışabilir (Çok az sayıda bağlantı için biraz daha yavaş):
#!/bin/bash
/usr/bin/tail -1 /proc/net/tcp | (IFS=:
read COUNT DISCARD
echo $COUNT
)
Ya da belki ...
awk 'END {print NR}' /proc/net/tcp
Bu çözümlerin her ikisi de, "wc" nin sadece satır sayısını saymak için çok uygun olmadığını varsaymaktadır. Testim bu varsayımın doğru olduğunu gösteriyor.
İlki, kuyruk komutunun gereksiz verileri atmakta gerçekten iyi olduğu için işe yarıyor, öyle ki, fazladan bir alt kabuk oluşturmak ve çevre değişkenleri üzerinde ekstra iş yapmak için oluşturuyor. / Proc / net / tcp içindeki satırların satırları sayma ihtiyacını ortadan kaldırmak için zaten numaralandırılmış olması gerçeğini kullanır. Son çözüm, awk'nin birden fazla işlem oluşturmak yerine daha büyük bir program yüklemek nedeniyle herhangi bir dezavantajı telafi etmek için yeterince saydığını varsaymaktadır. Awk çözümü, basit bir tek satırlı takma ad tanımına güzel bir şekilde uyması konusunda ilave bir avantaja sahiptir.
/proc/net/tcp
. Deneyebilirsin netstat -n -t | wc -l
, ama benim tahminim şu ki, netstat da okuyor/proc/net/tcp
netstat -nt
yaklaşık 180.000 bağlantıyla bir dakikadan fazla zaman alıyor . Neden bu kadar yavaş olması gerektiğine dair bir neden göremiyorum ... (okuma /proc/net/tcp
da çok yavaş)
awk
yaklaşımın çok daha yavaş olduğunu göstermektedir wc
. tail
ile eşit görünüyor wc
.
ss -s
Ayrıntılı cevap almak için komutu kullanın .
ss -s