netstat -ntap कुछ कनेक्शनों के लिए pid / प्रक्रिया नाम नहीं दिखाता है?


11

मेरे पास ubuntu / hardy सर्वर है, कर्नेल के साथ 2.6.24-23-सर्वर और नेटस्टैट:

# netstat --version
net-tools 1.60
netstat 1.42 (2001-04-15)

समस्या यह है कि हमारे पास बहुत सारे स्थापित कनेक्शन हैं जो पीआईडी ​​नहीं दिखाते हैं और न ही netstat -ntapआउटपुट में प्रोग्राम का नाम । नेस्टैट को रूट से बुलाया गया था, इसमें कोई क्रोकेट्स, ग्रैच्यूरिटी नहीं है, न ही ऐसा कुछ भी (या इसलिए मुझे बताया गया था :)।

क्या गलत हो सकता है पर कोई विचार?

अपडेट करें

lsof -n -i ठीक काम करता है, और कनेक्शन के लिए pid / प्रक्रिया नाम दिखाता है।


2
क्या आप इसे रूट के रूप में या सुडो के साथ चलाना सुनिश्चित करते हैं?
डोम

हाँ, यह रूट पर चलाया गया था, और यहां तक ​​कि रूट पर सुडो के माध्यम से। एक ही प्रभाव।

क्या आप सुनिश्चित हैं कि आप netstat -ntapइसके बजाय नहीं कर रहे थे netstat ntap?
काइल ब्रान्ड

मुझे यकीन है कि मैं कर रहा था netstat -ntap- जैसा मैंने लिखा था। जैसा कि यह तरीका है कि इसके मैन पेज के अनुसार नेटस्टैट के विकल्प दिए गए हैं।

साइड नोट - मैंने अभी जाँच की है और ऐसा लगता है कि netstat "-" के बिना दिए गए विकल्पों को नहीं पहचानता है।

जवाबों:


4

यह एनएफएस जैसी कर्नेल प्रक्रियाओं के साथ होगा, लेकिन कभी-कभी नियमित ऐप के साथ भी होता है: आरएचईएल 5 में समान व्यवहार होता है।

# netstat -taupen | grep 30715
tcp        0      0 0.0.0.0:30715           0.0.0.0:*               LISTEN      66558      81467710   - 

ध्यान दें कि lsof, दूसरी ओर, ठीक से शब्द:

# lsof -i:30715
AppName 1598 useracct   78u     IPv4           81467710                   TCP *:30715 (LISTEN)

4
198_141:~ # netstat  -anp|grep 33000
tcp        0      0 0.0.0.0:53000           0.0.0.0:*               LISTEN       -                   
198_141:~ # lsof -i:33000
COMMAND   PID USER   FD   TYPE     DEVICE SIZE NODE NAME
vsftpd  28147 root    3u  IPv4 4089990174       TCP *:33000 (LISTEN)
198_141:~ # id
uid=0(root) gid=100(users) groups=16(dialout),100(users)
198_141:~ # 

मेरे विचार में, दो स्थितियाँ हो सकती हैं:

1) सामान्य विशेषाधिकार वाले उपयोगकर्ता एक्स्यूट "नेटस्टैट" रूट द्वारा शुरू की गई उन प्रक्रियाओं को नहीं देख सकते हैं

2) कुछ प्रक्रियाएं कर्नेल में चलती हैं


1

स्थापित कनेक्शनों के लिए, यह केवल उन कनेक्शनों के लिए होना चाहिए जो एनएफएस या डीआरबीडी की तरह कर्नेल स्थान से शुरू किए गए हैं। जाहिर है कि वेटिंग कनेक्शन की प्रक्रिया उनके नीचे मर सकती थी। यदि आप किसी दिए गए कनेक्शन के कारण काम नहीं कर सकते हैं, तो आउटपुट पेस्ट करें और कोई आपको बता सकता है कि यह क्या है।


ये निश्चित रूप से कर्नेल आधारित कनेक्शन नहीं हैं क्योंकि ये एप्लिकेशन से डेटाबेस के कनेक्शन हैं।

Netstat का उत्पादन -nn grep ईएसटी?
वोमबल

मेरी समस्या यह है - कनेक्शन pid / program name के बजाय मेरे द्वारा सूचीबद्ध हैं "-"

3
और मैं यह देखना चाहता हूं कि वास्तव में क्या हो रहा है, इसके बजाय एक व्याख्या।
Womble

मैं आपको संपूर्ण आउटपुट नहीं दिखा सकता क्योंकि इसमें ऐसे नाम शामिल हैं जिनका उपयोग पर्यावरण की पहचान करने के लिए किया जा सकता है। इस विशेष पोर्ट के लिए लाइन इस तरह दिखती है: "tcp 0 0 localhost: 36949 लोकलहोस्ट: 6543 ESTABLISHED -"

1

मेरा व्यवहार समान है और मेरा अनुमान है कि नेटस्टैट व्यवहार बदल गया होगा। उदाहरण के लिए मैं 'wget' के लिए पोर्ट और प्रोग्राम देखता हूं, लेकिन Apache PHP प्रक्रियाओं के लिए नहीं, जो मेरे लिए अधिक महत्वपूर्ण हैं।

समाधान: मैंने इसके बजाय lsof का उपयोग करने के लिए अपनी स्क्रिप्ट को फिर से लिखा है (ऊपर संकेत देखें)


पास्कल: क्या आपने इस कमांड को sudo या रूट के रूप में चलाया था?
स्टीफन लासिवस्की

0

यहाँ आएँ क्योंकि इन दिनों मैं ubuntu 18.04 LTS (netstat एक ही संस्करण netstat 1.42 (2001-04-15)) पर एक ही प्रश्न का सामना कर रहा हूँ, अजीब 8 साल बाद भी कोई जवाब नहीं। नेट-टूल्स के सोर्स कोड को ब्राउज़ करने के बाद, मुझे यह मिल सकता है।

Netstat स्रोत कोड में:

  1. सभी प्रक्रिया फोल्डर / प्रूफ़ को पुनरावृत्त किया जाता है, प्रत्येक fd in / proc // fd डायरेक्टरी को सॉकेट इनोड से पिड / प्रोगनेम में मैप बनाने के लिए जाँच की जाती है।

  2. तब / proc / net / tcp को सॉकेट इनकोड सहित tcp सॉकेट जानकारी (tcp_info फ़ंक्शन द्वारा) प्राप्त करने के लिए जाँच की जाती है।

  3. tcp सॉकेट की जानकारी आउटपुट करते समय, pid / progname को सॉकेट इनोड के माध्यम से चरण 1 में मैप से क्वेर किया जाता है। अगर कुछ नहीं मिला, '-' आउटपुट।

यदि नक्शा बनने के बाद सॉकेट बनाया जाता है, तो मैप में pid / progname नहीं मिलेगा।

हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.