बदमाश आवेदन के द्वारा खुला एक बंदरगाह को कैसे बंद करें या (अनबाइंड?) करें।


19

मैं फेडोरा 13 64 बिट का उपयोग कर रहा हूं। मेरा ग्रहण कार्यक्रम पोर्ट 9050 पर एक सर्वर शुरू करता है, लेकिन मैं कार्यक्रम को बंद कर देता हूं, ग्रहण सर्वर को ठीक से बंद करने में विफल रहता है। ग्रहण को फिर से शुरू करने का कोई प्रभाव नहीं है।

मैं कमांड लाइन से एक पोर्ट को जबरन कैसे बंद या अनबंड कर सकता हूं?

मुझे पता है कि रिबूट करना या लॉग ऑफ करना और वापस बंदरगाहों को साफ करना होगा लेकिन मेरे लिए यह बहुत धीमी प्रक्रिया है। मैं कमांड लाइन में पोर्ट को जबरन बंद करने के लिए देख रहा हूं।

जवाबों:


10

एक सुनने के बंदरगाह को बलपूर्वक बंद करने का एकमात्र तरीका उस प्रक्रिया को मारना है जो उस पर सुन रहा है। का प्रयोग करें lsof, netstat, fuser- रूट के रूप में - बाहर प्रक्रिया ID खोजने के लिए। एक बार जब प्रक्रिया बाहर निकल जाती है (अपने आप से या मारे जाने से), कर्नेल स्वचालित रूप से उन सभी सॉकेट्स को साफ कर देगा जो उसके पास खुले थे। (हालांकि, ऐसे मामले भी हो सकते हैं कि कुछ मिनटों के लिए एक ही पोर्ट पर कार्यक्रमों को सुनने से इनकार कर दिया जाएगा; इस मामले में आप केवल इतना कर सकते हैं कि आप इंतजार कर सकते हैं।)


19
lsof -n -i

जिस प्रक्रिया को आप ढूंढ रहे हैं उसे ढूंढें और उसे मार दें।

से lsofमैनुअल :

-n यह विकल्प नेटवर्क फ़ाइलों के नाम को होस्ट करने के लिए नेटवर्क नंबर के रूपांतरण को रोकता है। अवरोधक रूपांतरण से lsof तेजी से चल सकता है। यह तब भी उपयोगी है जब होस्ट नाम लुकअप ठीक से काम नहीं कर रहा है।

-i [i] यह विकल्प उन फ़ाइलों की सूची का चयन करता है, जिनके इंटरनेट पते में कोई भी पता निर्दिष्ट है जो कि i में निर्दिष्ट पते से मेल खाता है। यदि कोई पता निर्दिष्ट नहीं है, तो यह विकल्प सभी इंटरनेट और x.25 (HP-UX) नेटवर्क फ़ाइलों की सूची का चयन करता है।

इस सवाल का एक ही जवाब मुझे लगता है।


7
| grep ":9050"आसानी से आउटपुट को फिल्टर करने के लिए (या जो भी पोर्ट नंबर) पर फेंको
isaacparrot

9

आप स्विच के fuserसाथ कमांड को यूजर कर सकते हैं -k

उदाहरण के लिए, पोर्ट 111 को बंद करने के लिए, आप निम्न कार्य कर सकते हैं: fuser -k 111/tcp (यह आपको इसे मारने की प्रक्रिया की आईडी को खोजने के झंझट से भी बचाता है जैसा कि फ्यूज़र निहितार्थ में करता है)

ध्यान दें कि कुछ प्रक्रियाएं एक बार बंद होने के बाद स्वचालित रूप से पुनरारंभ होती हैं। उसके लिए, आपको एक उपयुक्त वर्कअराउंड के साथ आने के लिए प्रत्येक प्रक्रिया की कॉन्फिगर फाइल को जांचना होगा।


-3

मेरे पास एक ही मुद्दा था, बस उस प्रक्रिया को देखें जिसके लिए विंडोज़ पर cmd कमांड का उपयोग करके पोर्ट को सुना जा रहा है

netstat -a -b

तब आप इसे कार्य प्रबंधक के साथ बंद कर सकते हैं


2
क्षमा करें, मैं नीच। आप "विंडोज पर" का उल्लेख करते हैं। Netstat को "-b" पैरामीटर, जो निष्पादन योग्य नाम दिखाता है, माइक्रोसॉफ्ट विंडोज के लिए विशिष्ट है। (यूनिक्स नेटस्टैट भिन्नताओं में समान कार्यक्षमता हो सकती है, लेकिन आमतौर पर वह उसी पैरामीटर का उपयोग नहीं कर रही है।) हालांकि, सवाल "फेडोरा" ने कहा, इसलिए इस सवाल का पूछने वाला एक अलग ऑपरेटिंग सिस्टम फेडोरा 13 64 बिट के बारे में जानकारी की तलाश में था। फेडोरा के लिए नेटस्टैट का मैन पेज दर्शाता है कि -pपीआईडी का उपयोग करना दिखाता है (जिसका उपयोग निष्पादन योग्य के नाम की पहचान करने के लिए किया जा सकता है)।
TOOGAM

1
इस उत्तर में कई गलतियाँ हैं। उत्तर में एक व्याकरणिक त्रुटि होती है जिसे टाला जा सकता था। उत्तर भी फेडोरा पर लागू नहीं है, जो स्पष्ट रूप से उल्लेख किया गया है, प्रश्न के पहले वाक्य में। ऐसा नहीं है कि प्रश्न में यह जानकारी नहीं थी जब यह जवाब 30 मिनट पहले प्रस्तुत किया गया था, यह सवाल जुलाई 2011 के बाद से संपादित नहीं किया गया है, जो लगभग 5 महीने पहले था। तो मैं इसका उत्तर यह ले रहा हूं कि यह "मुझे भी" उत्तर है, जो वास्तव में बहुत ही उपयोगी है।
रामहाउंड
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.