मुझे माफ कर दो अगर यह इस सवाल के लिए सबसे अच्छा मंच नहीं है, लेकिन यह कर्नेल के लिए प्रोग्रामिंग की तुलना में अधिक प्रासंगिक लगता है।
मैं एक स्क्रिप्ट लिख रहा हूं जो खुले बंदरगाहों के लिए सिस्टम पर सवाल उठाता है ताकि हम आँकड़ों को ग्राफ और मॉनिटर कर सकें। इसके लिए, मैं iproute पैकेज से "ss" कमांड का उपयोग कर रहा हूं। यदि आप निष्पादित करते हैं ss -s|grep estab
तो आपको इसके समान आउटपुट प्राप्त होगा:
TCP: 296 (estab 6, closed 238, orphaned 0, synrecv 0, timewait 238/0), ports 0
मेरे सवाल का टाइमवायट वैरिएबल के साथ क्या करना है, जो TIME_WAIT स्थिति में गणना की गई सॉकेट दिखाता है। जब मैंने यह पता लगाने की कोशिश की कि स्लैश के बाद किस नंबर को संदर्भित किया गया था, यह स्रोत कोड की खोज का एक बवंडर साहसिक कार्य बन गया, जिसने अंततः मुझे निम्नलिखित स्निपेट खोजने के लिए प्रेरित किया:
printf("TCP: %d (estab %d, closed %d, orphaned %d, synrecv %d, timewait %d/%d), ports %d\n",
s.tcp_total + slabstat.tcp_syns + s.tcp_tws,
sn.tcp_estab,
s.tcp_total - (s.tcp4_hashed+s.tcp6_hashed-s.tcp_tws),
s.tcp_orphans,
slabstat.tcp_syns,
s.tcp_tws, slabstat.tcp_tws,
slabstat.tcp_ports
);
मुझे स्वीकार करना चाहिए, "स्लैबस्टैट" के बारे में मेरी खोज का मतलब यह था कि अंततः स्लैब कैश और उनके रिपोर्टिंग इंटरफ़ेस के बारे में मेरी जानकारी के लिए नेतृत्व किया गया / पर / slabinfo।
प्रश्न: TAB_WAIT सॉकेट गणना के साथ स्लैबटेबल का क्या करना है? मैं यह पता लगाने में विफल हो रहा हूं कि यह संख्या क्यों बताई गई है, क्योंकि जितनी बार मैंने हर सर्वर पर कमांड चलाया है, उस पर मैंने कोशिश की है, यह संख्या हमेशा शून्य रही है।