जवाबों:
यदि आप केवल नंबर प्राप्त करना चाहते हैं और आपको किसी भी विवरण की आवश्यकता नहीं है तो आप डेटा को पढ़ सकते हैं /proc/net/sockstat{,6}
। कृपया ध्यान रखें कि कनेक्शन की पूर्ण गणना प्राप्त करने के लिए आपको दोनों मूल्यों को संयोजित करना होगा।
आप कर्नेल ही आप उपयोग कर सकते से जानकारी प्राप्त करना चाहते हैं NETLINK_INET_DIAG
से इसे पढ़ने के लिए बिना गिरी से जानकारी प्राप्त करने के/proc
एक तेज़ तरीका? इस तरह से एक दूसरे के एक अंश में एक जवाब पैदा करता है, वास्तव में यह मेरे कंप्यूटर पर 0.009 सेकंड लेता है!
क्या आप एक ऐसे रास्ते की तलाश में हैं जिसके लिए कम टाइपिंग की आवश्यकता हो? उस मामले में एक उपनाम सेट करें, उदा
alias tcpcount="wc -l /proc/net/tcp"
अब आप केवल tcpcount
इस नाम को प्राप्त करने के लिए अपने उदाहरण में उपयोग किए गए उपनाम को दर्ज कर सकते हैं ।
लाइन दर्ज करें या इसे अपने .bashrc में जोड़ें ताकि हर बार जब आप लॉग इन करते हैं, तो अन्य नाम परिभाषित हो जाता है।
बड़ी संख्या में कनेक्शन के लिए, निम्नलिखित संभवतः थोड़ा तेज़ चला सकते हैं (और बहुत कम संख्या में कनेक्शन के लिए थोड़ा धीमा):
#!/bin/bash
/usr/bin/tail -1 /proc/net/tcp | (IFS=:
read COUNT DISCARD
echo $COUNT
)
या हो सकता है ...
awk 'END {print NR}' /proc/net/tcp
इन दोनों समाधानों का मानना है कि "डब्ल्यूसी" सिर्फ लाइनों की संख्या की गिनती के लिए बहुत इष्टतम नहीं है। मेरे परीक्षण से पता चलता है कि यह धारणा सही है।
पहले आधार पर काम करता है कि पूंछ कमांड अनावश्यक रूप से डेटा को छोड़ने के लिए वास्तव में अच्छा है, इतना है कि यह एक अतिरिक्त उप-शेल बनाने और पर्यावरण चर पर अतिरिक्त काम करने के लिए बनाता है। यह इस तथ्य का लाभ उठाता है कि लाइनों की गणना करने की आवश्यकता को समाप्त करने के लिए / proc / net / tcp में पंक्तियाँ पहले से ही क्रमांकित हैं। अंतिम समाधान यह मानता है कि एक बड़ा कार्यक्रम लोड करने के कारण किसी भी नुकसान को ऑफसेट करने के लिए पर्याप्त रूप से जागता है कई प्रक्रियाओं का निर्माण बनाम। Awk solution में अतिरिक्त लाभ है कि यह एक साधारण एक-पंक्ति की दूसरी परिभाषा में अच्छी तरह से फिट बैठता है (जो इसमें अतिरिक्त लाभ देता है, जिसे कोई स्क्रिप्ट नहीं कहा जाता है, इस प्रकार कोई अतिरिक्त शेल प्रक्रियाएँ नहीं मिलती हैं, अतिरिक्त मिलि-सेकंड लाभ देता है।)
/proc/net/tcp
। आप कोशिश कर सकते हैं netstat -n -t | wc -l
, लेकिन मेरा अनुमान है कि netstat से भी पढ़ा जाता है/proc/net/tcp
netstat -nt
लगभग 180.000 कनेक्शन के साथ एक मिनट से अधिक समय लगता है । मुझे कोई कारण नहीं दिखता कि इसे इतना धीमा क्यों होना चाहिए ... (पढ़ना /proc/net/tcp
भी बहुत धीमा है)
awk
दृष्टिकोण की तुलना में धीमी गति से धीमी है wc
। tail
के साथ बराबर लगता है wc
।
ss -s
विस्तृत उत्तर प्राप्त करने के लिए कमांड का उपयोग करें ।
ss -s