लिनक्स में नेटवर्क कमांड लाइनों का उपयोग किए बिना, खुले बंदरगाहों की सूची और उनके मालिक होने की प्रक्रिया को कैसे जानें?


11

मैं जानना चाहता हूं कि कौन-सी पोर्ट किन-किन प्रक्रियाओं का उपयोग एम्बेडेड-लिनेक्स में करती हैं। चूंकि यह सरल एम्बेडेड-लिनक्स है, इसलिए नेटस्टैट, lsof जैसी कोई नेटवर्क कमांड लाइन नहीं हैं। (केवल बुनियादी कमांड लाइन जैसे कि बिल्ली, सीपी, इको, आदि मौजूद हैं)।

एक आंशिक समाधान "बिल्ली / proc / net / tcp" और "cat / proc / net / udp" कमांड लाइनों का उपयोग करना प्रतीत होता है। हालाँकि, मुझे यकीन नहीं है कि उन कमांड लाइनों से मुद्रित सूची उपयोग में सभी बंदरगाहों को दिखाती है , और सूची यह नहीं दिखाती है कि कौन सी प्रक्रिया कुछ पोर्ट से जुड़ी हुई है

किसी भी टिप्पणी की सराहना की जाएगी।


मुझे लगता है कि यह सवाल यूनिक्स और लिनक्स के

जवाबों:


15

आप में सभी खुले बंदरगाहों को खोजने के लिए सक्षम होना चाहिए /proc/net/tcpऔर /proc/net/udp। उन फ़ाइलों में से प्रत्येक में एक inodeकॉलम होता है, जिसका उपयोग उस सॉकेट के मालिक होने की प्रक्रिया को खोजने के लिए किया जा सकता है।

एक बार जब आपके पास एक आईनोड नंबर होता है, तो आप एक एलएस कमांड चला सकते हैं जैसे ls -l /proc/*/fd/* | grep socket:.$INODEकि उस सॉकेट का उपयोग करके प्रक्रियाओं को ढूंढना। यदि विभिन्न थ्रेड्स के लिए अलग-अलग फ़ाइल डिस्क्रिप्टर के साथ एक प्रक्रिया स्थापित की गई है, तो आपको ls -l /proc/*/task/*/fd/* | grep socket:.$INODEसभी को खोजने के लिए कमांड को विस्तारित करने की आवश्यकता हो सकती है ।


1
find /proc -lname "socket:\[$INODE\]" 2> /dev/null
सैममिच

0

किसी भी पोर्ट के कमांड के लिए INODES खोजने के लिए

PORT=8080;cat /proc/net/* | awk -F " " '{print $2 ":" $10 }' | grep -i `printf "%x:" $PORT` | awk -F ":" '{print "PORT=" $2 ", INODE=" $3 }'

नीचे दिए गए PID को खोजने के लिए कमांड आउटपुट के ऊपर से किसी भी INODE का उपयोग करें

find /proc -lname "socket:\[$INODE\]" 2> /dev/null | head -n 1 | awk -F "/" '{print "PID="$3}'

यहाँ $ INODE किसी भी INODE का मूल्य है

एकल पंक्ति कमांड में, हम जांच सकते हैं, यदि कोई पोर्ट खुला है और नीचे किसी पीआईडी ​​से जुड़ा है

PORT=8080;find /proc -lname "socket:\[$(cat /proc/net/* | awk -F " " '{print $2 ":" $10 }' | grep -i `printf "%x:" $PORT` | head -n 1 | awk -F ":" '{print $3}')\]" 2> /dev/null | head -n 1 | awk -F "/" '{print "PID="$3}'
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.