ऐसी प्रक्रिया की पहचान कैसे करें, जिसमें कोई पीड न हो?


47

मेरे पास एक प्रक्रिया है जो 2 बंदरगाहों को सुनती है: 45136 / tcp और 37208 / udp (वास्तव में मुझे लगता है कि यह वही प्रक्रिया है)। लेकिन netstat किसी भी पीआईडी ​​को वापस नहीं करता है:

netstat -antlp | grep 45136
tcp        0      0 0.0.0.0:45136           0.0.0.0:*           LISTEN      - 

"Grep 37208" के समान परिणाम।

मैंने lsof को भी आज़माया:

lsof -i TCP:45136

लेकिन यह कुछ भी वापस नहीं करता है। यह निचोड़ की एक नई स्थापना है और मैं वास्तव में नहीं जानता कि यह प्रक्रिया क्या हो सकती है। कोई उपाय ?

उत्तर आपकी टिप्पणियों के लिए धन्यवाद मुझे पता चला कि यह क्या था। मैंने nfs-server nfs-common (dkpg --get-selections | grep nfs खोज के बाद) और अज्ञात प्रक्रिया को अस्वीकृत कर दिया। अजीब बात है कि कर्नेल प्रक्रिया किसी भी तरह से चिह्नित नहीं हैं।

आप दोनों को फिर से धन्यवाद। ;)

जवाबों:


57

netstat

वहां एक प्रक्रिया है, आपका उपयोगकर्ता आईडी सिर्फ यह देखने के लिए निजी नहीं है कि यह क्या है। यह सुरक्षा प्रदान करने वाली एक परत है lsofजो आपको इसे देखने से रोक रही है। केवल कमांड को फिर से चलाएं लेकिन sudoइसके बजाय कमांड का उपयोग करके इसे उपसर्ग करें ।

$ sudo netstat -antlp | grep 45136

lsofशीर्ष पर आउटपुट में इसके बारे में एक चेतावनी भी है ।

(सभी प्रक्रियाओं की पहचान नहीं की जा सकती है, गैर-स्वामित्व वाली प्रक्रिया जानकारी नहीं दिखाई जाएगी, आपको यह सब देखने के लिए मूल होना होगा।)

उदाहरण

$ netstat -antlp | grep 0:111
tcp        0      0 0.0.0.0:111       0.0.0.0:*     LISTEN      -                   

$ sudo netstat -antlp | grep 0:111
tcp        0      0 0.0.0.0:111       0.0.0.0:*     LISTEN      1248/rpcbind

एस एस

यदि आप netstatशायद साथ कोई भाग्य नहीं कर रहे ssहैं। आपको अभी भी उपयोग करने की आवश्यकता होगी sudo, और आउटपुट थोड़ा अधिक गूढ़ हो सकता है।

उदाहरण

$ ss -apn|grep :111
LISTEN     0      128         :::111             :::*     
LISTEN     0      128          *:111              *:*     

$ sudo ss -apn|grep :111
LISTEN     0      128         :::111             :::*      users:(("rpcbind",1248,11))
LISTEN     0      128          *:111              *:*      users:(("rpcbind",1248,8))

प्रोसेस आईडी अभी भी नहीं है?

ऐसे उदाहरण हैं जहां बस टीसीपी पोर्ट से जुड़ा एक पीआईडी ​​नहीं है। आप @ derobert के उत्तर में , NFS के बारे में पढ़ सकते हैं , जो उनमें से एक है। और भी हैं। मेरे पास ऐसे उदाहरण हैं जहाँ मैं IMAP जैसी सेवाओं से जुड़ने के लिए ssh सुरंगों का उपयोग कर रहा हूँ। ये बिना प्रोसेस आईडी के भी दिख रहे हैं।

किसी भी मामले में आप एक अधिक वर्बोज़ फॉर्म का उपयोग कर सकते हैं, netstatजो अंततः टीसीपी पोर्ट का उपयोग करके किस प्रक्रिया पर अतिरिक्त प्रकाश डाल सकता है।

$ netstat --program --numeric-hosts --numeric-ports --extend

उदाहरण

$ netstat --program --numeric-hosts --numeric-ports --extend |grep -- '-' | head -10
Proto Recv-Q Send-Q Local Address               Foreign Address             State       User       Inode      PID/Program name   
tcp        0      0 192.168.1.103:936           192.168.1.3:60526           ESTABLISHED root       160024310  -                   
tcp        0      0 192.168.1.1:2049            192.168.1.3:841             ESTABLISHED sam        159941218  -                   
tcp        0      0 127.0.0.1:143               127.0.0.1:57443             ESTABLISHED dovecot    152567794  13093/imap-login    
tcp        0      0 192.168.1.103:739           192.168.1.3:2049            ESTABLISHED root       160023970  -                   
tcp        0      0 192.168.1.103:34013         192.168.1.3:111             TIME_WAIT   root       0          -                   
tcp        0      0 127.0.0.1:46110             127.0.0.1:783               TIME_WAIT   root       0          -                   
tcp        0      0 192.168.1.102:54891         107.14.166.17:110           TIME_WAIT   root       0          -                   
tcp        0      0 127.0.0.1:25                127.0.0.1:36565             TIME_WAIT   root       0          -                   
tcp        0      0 192.168.1.1:2049            192.168.1.6:798             ESTABLISHED tammy      152555007  -             

यदि आप नोटिस करते हैं कि आउटपुट में INODES शामिल है तो हम इस जानकारी का उपयोग करके प्रक्रिया में वापस आ सकते हैं।

$ find -inum 152555007

जो आपको एक फ़ाइल दिखाएगा जो आपको एक प्रक्रिया में ले जा सकती है।

संदर्भ


@derobert - मैं सोच रहा था कि वे धागे थे।
स्लम

@ एसएलएम (यूजर्सस्पेस) थ्रेड्स में पीआईडी ​​हैं।
derobert

@derobert - यही मैंने सोचा था लेकिन सुनिश्चित करने के लिए दोहरी जाँच कर रहा था।
स्लम

@derobert - मैंने पाया: "लिनक्स कर्नेल स्वयं NFS सर्वर (उर्फ" knfsd ") प्रदान करता है। इस प्रकार कोई संबद्ध प्रक्रिया नहीं है क्योंकि कर्नेल एक प्रक्रिया नहीं है।"
SLM

@ जॉनडे - ऐसा हो सकता है कि वे एनएफएस से संबंधित हों।
SLM

16

एक अन्य विकल्प यह है कि सॉकेट एक प्रक्रिया से संबंधित नहीं है, यह कर्नेल के अंतर्गत आता है। इसका एक सामान्य उदाहरण एनएफएस है।

Watt:~# netstat -ltp | egrep -- '-[[:space:]]*$'
tcp        0      0 *:nfs                   *:*                     LISTEN      -               
tcp        0      0 *:48131                 *:*                     LISTEN      -               
tcp6       0      0 [::]:55607              [::]:*                  LISTEN      -               
tcp6       0      0 [::]:nfs                [::]:*                  LISTEN      -               

मुझे इनकी पहचान के लिए सामान्य तौर पर एक अच्छा तरीका सुनिश्चित नहीं है। एनएफएस के विशेष मामले में, rpcinfoअक्सर हमें बताने में सक्षम होंगे:

anthony@Watt:~$ rpcinfo -p | grep 48131
    100021    1   tcp  48131  nlockmgr
    100021    3   tcp  48131  nlockmgr
    100021    4   tcp  48131  nlockmgr

दुर्भाग्य से, यह केवल IPv4 के लिए काम करता है। V6 प्राप्त करने के लिए, आपको छोड़ना होगा -p, जो तब मूर्खतापूर्ण तरीके से पोर्ट नंबर प्रदर्शित करता है: आईपी पते के दो अतिरिक्त ऑक्टेट के रूप में। पोर्ट 55,607 इस प्रकार हो जाता 217.55 (क्योंकि 217  × + 256  55  = 55,607):

anthony@Watt:~$ rpcinfo  | grep -i 217.55
    100021    1    tcp6      ::.217.55              nlockmgr   superuser
    100021    3    tcp6      ::.217.55              nlockmgr   superuser
    100021    4    tcp6      ::.217.55              nlockmgr   superuser

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