lsof और सुनने वाले पोर्ट


50

मैं मैक ओएस एक्स पर नेटवर्क कनेक्शन के लिए सुनने वाली सभी प्रक्रियाओं को प्राप्त करने की कोशिश कर रहा हूं। मेरे netstatपास -pविकल्प नहीं है और मैं lsof के साथ कोशिश कर रहा हूं

lsof -i -sTCP:LISTEN

मुझे सुनने की प्रक्रियाओं की एक उचित सूची देता है लेकिन सभी नहीं। मैं उदाहरण के लिए टेलनेट को 10080 पोर्ट कर सकता हूं जहां मेरे पास कनेक्शन के लिए सुनने की एक प्रक्रिया है लेकिन यह आउटपुट में नहीं दिखाया गया है lsof। मैं क्या खो रहा हूँ?

$ telnet localhost 10080
Trying ::1...
Connected to localhost.
Escape character is '^]'.
^]
telnet> Connection closed.

परंतु

$ sudo lsof -n -i | grep 10080
$

3
क्या amanda10080 के बजाय lsof का आउटपुट कहते हैं ?
जॉन लिन

3
@JonLin मैंने ध्यान नहीं दिया कि -nकेवल पते और बंदरगाहों को प्रभावित करता है। पोर्ट नंबर पाने के लिए मुझे -Pभी इस्तेमाल करना होगा । साभार
मत्तो

3
@JonLin: लेकिन आपके पास पोस्ट है lsof -i -sTCP:LISTEN, और इसके बिना -nऔर यह 10080 को भी प्रकट नहीं करता है। इसलिए आपको इसका उपयोग करना होगा -P
हनन एन।

जवाबों:


75
sudo lsof -iTCP -sTCP:LISTEN
sudo lsof -iTCP -sTCP:LISTEN -P
sudo lsof -iTCP -sTCP:LISTEN -P -n
sudo lsof -iTCP -sTCP:LISTEN -n

सभी ... | wc -lमेरी भारी इस्तेमाल की गई लायन एमबीपी पर समान 32 प्रविष्टियाँ ( ) लौटाते हैं ।

-P -nlsofनाम समाधान करने से रोकता है, और यह ब्लॉक नहीं करता है। इनमें से किसी एक को भी मिस करना बहुत धीमा हो सकता है।

यूडीपी के लिए sudo lsof -iUDP -P -n | egrep -v '(127|::1)':। बिना -nऔर -P, यह एक लंबा समय लगता है।

अनुस्मारक: इसमें फ़ायरवॉल सेटिंग्स शामिल नहीं हैं।


3
हाँ समस्या गायब थी -P। मुझे गलत तरीके से -nन केवल आईपी पर बल्कि पोर्ट नंबर पर भी लागू किया गया।
मत्तो

-1
  1. पहले प्रोसेस आईडी (पीआईडी) का पता लगाएं, जिसमें आवश्यक पोर्ट (जैसे 5434) का कब्जा है:

    ps aux | grep 5434
    
  2. उस प्रक्रिया को मार डालो:

    kill -9 <pid>
    

5
ps auxउन प्रक्रियाओं को सूचीबद्ध नहीं करता है जिनका एक प्रक्रिया उपयोग कर रही है
Matteo

मैं माटेओ से सहमत हूं; क्या आपको यकीन है कि आपने netstat -anp जैसा कुछ नहीं किया है | grep 5434 (जो सामान की सूची लौटाएगा जो 5434 पर सुन रहा है, और पहला या दूसरा स्तंभ पिड है?)
Foon

6
इस प्रकार केवल उस स्थिति में काम किया जा सकता है जहां निष्पादन स्ट्रिंग में स्पष्ट रूप से दिए गए पोर्ट नंबर के साथ एक प्रक्रिया को बुलाया गया था और स्ट्रिंग के उस हिस्से को grep द्वारा मिलान किया जाएगा।
टेक्राफ

1
kill -9एक प्रक्रिया से छुटकारा पाने के लिए पहले विकल्प के रूप में उपयोग करना एक चरम विकल्प है। इसके अलावा, यह वास्तव में इस सवाल का जवाब नहीं देता है, जो चीजों को मारने के बारे में नहीं है, लेकिन यह पता लगाना है कि क्या चल रहा है।
lindes
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.