एक टीसीपी / आईपी पोर्ट को मुक्त करना?


146

netstat -tulnap मुझे दिखाती है कि बंदरगाहों का क्या उपयोग है। लिनक्स में पोर्ट कैसे खाली करें?

जवाबों:


214

जैसा कि दूसरों ने कहा है, आपको उन सभी प्रक्रियाओं को मारना होगा जो उस बंदरगाह पर सुन रहे हैं। ऐसा करने का सबसे आसान तरीका फ़्यूज़र (1) कमांड का उपयोग करना होगा। उदाहरण के लिए, पोर्ट 80 पर http अनुरोधों के लिए सुनने वाली सभी प्रक्रियाओं को देखने के लिए (रूट के रूप में या sudo का उपयोग करें):

# fuser 80/tcp

यदि आप उन्हें मारना चाहते हैं, तो बस -k विकल्प जोड़ें।


1
मैंने पाया कि पोर्ट के लिए एक अनुरोध भेजने से यह भी साफ हो जाता है (हालांकि मैं कोई लिनक्स विशेषज्ञ नहीं हूं)
मेटज

1
डेबियन पर फ्यूज़र स्थापित करने के लिए: sudo apt-get install psmisc ( bitflop.com/document/107 )
Korneel

1
इसने काम किया, लेकिन मुझे सेंटो 7 ( sudo yum install psmisc)
Marlon Bernardes

1
kill -9 $(fuser 80/tcp 2>/dev/null)
हिंनोव्स्की

76

लिनक्स में कमांड के नीचे एक विशिष्ट पोर्ट को मारने के लिए

sudo fuser -k Port_Number/tcp

अपने कब्जे वाले पोर्ट से Port_Number को बदलें।


6
यह वास्तव में उस प्रक्रिया को मारता है जो पोर्ट को खोलती है न कि पोर्ट को ही।
विनायक

16

आप उस कनेक्शन को मारने के लिए tcpkill( dsniffपैकेज का हिस्सा ) का उपयोग कर सकते हैं जो आपके लिए आवश्यक पोर्ट पर है:

sudo tcpkill -9 port PORT_NUMBER

11
यह सिर्फ लटका हुआ है$ sudo tcpkill -9 port 5432 tcpkill: listening on lxcbr0 [port 5432]
एंथ्रोपिक

16

टर्मिनल प्रकार में:

netstat -anp|grep "port_number"

यह पोर्ट विवरण दिखाएगा। पिछले कॉलम पर जाएं। यह इस प्रारूप में होगा। उदाहरण के लिए: - पीआईडी ​​/ जावा

फिर निष्पादित करें:

kill -9 PID. Worked on Centos5

मैक के लिए:

lsof -n -i :'port-number' | grep LISTEN

नमूना प्रतिक्रिया:

java   4744 (PID)  test  364u  IP0 asdasdasda   0t0  TCP *:port-number (LISTEN)

और फिर निष्पादित करें:

kill -9 PID 

मैकबुक पर काम किया


जाहिर है कि यह काम नहीं करता है अगर PID कॉलम उस पोर्ट के लिए खाली है
Anentropic

1
... और यह तब होता है जब आपके पास प्रक्रिया को देखने की अनुमति नहीं होती है ... sudo netstatवास्तव में PIDs देखने की कोशिश करें :)
एंथ्रोपिक

मैं पोटीन क्ली के माध्यम से एक अमेज़ॅन ec2 उदाहरण पर एक बंदरगाह को मारने की कोशिश कर रहा था। फॉरएवर ने कहा कि इसकी कोई प्रक्रिया नहीं है, लेकिन पोर्ट (एक कोणीय ऐप के लिए 4200) अभी भी खुला था। यह एकमात्र कमांड है जो मेरे लिए काम करता है।
vtechmonkey

9

"netstat --programs"आदेश आप इस प्रक्रिया के बारे में जानकारी दे देंगे, आप जड़ मानते हुए। फिर आपको "अपमानजनक" प्रक्रिया को मारना होगा जो अच्छी तरह से फिर से शुरू हो सकता है बस आपको नाराज करने के लिए :-)।

आप वास्तव में यहां क्या हासिल करने की कोशिश कर रहे हैं? समाधान उन बंदरगाहों को पकड़ने वाली प्रक्रियाओं के आधार पर अलग-अलग होंगे।


8

सभी बंदरगाहों की जांच करने के लिए:

netstat -lnp

एक खुला पोर्ट बंद करने के लिए:

fuser -k port_no/tcp

उदाहरण:

fuser -k 8080/tcp

sudoयदि आवश्यक हो तो दोनों मामलों में आप कमांड का उपयोग कर सकते हैं ।


7

उस प्रक्रिया को मारें जो प्रश्न में बंदरगाह को सुन रही है। मेरा मानना ​​है कि netstat आपको आईडी प्रोसेस करता है।


3
netstat -anp | grep <port> अंतिम कॉलम में प्रक्रिया है
user1747935

2

यदि आप वास्तव में किसी प्रक्रिया को तुरंत मारना चाहते हैं, तो आप इसे TERM सिग्नल (बाद में रुकने का अनुरोध, बिना किसी सफाई के तुरंत प्रभाव में लेंगे) के बजाय KILL सिग्नल भेजते हैं। यह करना आसान है:

kill -KILL <pid>

हालाँकि इस बात से अवगत रहें कि आप जिस कार्यक्रम को रोक रहे हैं, उसके आधार पर ऐसा करते समय इसकी स्थिति बुरी तरह दूषित हो सकती है। आप सामान्य रूप से केवल KILL सिग्नल भेजना चाहते हैं जब सामान्य समाप्ति काम नहीं करती है। मैं सोच रहा हूं कि अंतर्निहित समस्या क्या है जिसे आप हल करने की कोशिश करते हैं और क्या हत्या सही समाधान है।


0

मुझे लगता है कि पोर्ट को खोलने की प्रक्रिया को रोकने का एकमात्र तरीका होगा।



-14

कंप्यूटर को बंद करना हमेशा मेरे लिए प्रक्रिया को मारता है।


सर्वर मशीन बंद करना दुर्लभ है।
वकस

23
क्या आपको अपना "सबसे मजेदार" बिल्ला मिला?
jplandrain 14

अपने कंप्यूटर को बंद करने के लिए कोई ज़रूरत नहीं है।
अनिल चहल

सबसे अच्छा विचार कभी 10/10
वैलेंटाइन Roudge

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