पोर्ट 80 पर चल रही किल प्रक्रिया


14

यह वह प्रक्रिया है जिसे मैं मारना चाहता हूं:

sooorajjj@Treako ~/Desktop/MerkMod $ sudo netstat -tunap | grep :80
tcp6    0   0 :::80   :::*     LISTEN    20570/httpd

जवाबों:


31

यह पता लगाने के कई तरीके हैं कि कौन सी रनिंग प्रक्रिया एक पोर्ट का उपयोग कर रही है।

फ्यूज़र का उपयोग करने से यह सुनने के पोर्ट से जुड़े कई उदाहरणों का पीआईडी ​​प्रदान करेगा।

sudo apt-get install psmisc
sudo fuser 80/tcp

80/tcp:               1858  1867  1868  1869  1871

यह पता लगाने के बाद, आप प्रक्रिया को रोक सकते हैं या मार सकते हैं (तों)।

आप lsof का उपयोग करके PID और अधिक विवरण भी पा सकते हैं

sudo lsof -i tcp:80

COMMAND  PID     USER   FD   TYPE DEVICE SIZE/OFF NODE NAME  
nginx   1858     root    6u  IPv4   5043      0t0  TCP ruir.mxxx.com:http (LISTEN)  
nginx   1867 www-data    6u  IPv4   5043      0t0  TCP ruir.mxxx.com:http (LISTEN)  
nginx   1868 www-data    6u  IPv4   5043      0t0  TCP ruir.mxxx.com:http (LISTEN)  
nginx   1869 www-data    6u  IPv4   5043      0t0  TCP ruir.mxxx.com:http (LISTEN)  
nginx   1871 www-data    6u  IPv4   5043      0t0  TCP ruir.mxxx.com:http (LISTEN)  

पोर्ट 80 पर सुनने वाले सॉकेट्स तक सीमित करने के लिए (पोर्ट 80 से कनेक्ट करने वाले क्लाइंट के विपरीत):

sudo lsof -i tcp:80 -s tcp:listen

स्वचालित रूप से उन्हें मारने के लिए:

sudo lsof -t -i tcp:80 -s tcp:listen | sudo xargs kill

1
मैं यह बताना चाहता हूं कि फ्यूज़र में -kसभी मिलान प्रक्रियाओं -iको मारने के लिए , और अंतःक्रियात्मक रूप से मारने के लिए स्विच है (प्रत्येक के लिए आपको संकेत देते हुए)।
ए। विलकॉक्स

7

यहाँ एक ऑनलाइनर है जो चलाने के लिए कमांड दिखाता है:

echo kill $(sudo netstat -anp | awk '/ LISTEN / {if($4 ~ ":80$") { gsub("/.*","",$7); print $7; exit } }')

बदलें echoद्वारा sudoलिए प्रक्रिया वास्तव में मारे जाने के लिए।


बदलें echoके लिएsudo
EliuX

यह सही उत्तर है जिसे हमें केवल अपने पोर्ट नंबर के साथ बदलना है 80
यूसुफ एच।

4

खुला बंदरगाहों लिस्टिंग के लिए तीन विकल्प में की पेशकश कर रहे JSH की whatisonport:

netstat -anp --numeric-ports | grep ":${PORT}\>.*:" 

fuser -v "${PORT}"/tcp

lsof -P -S 2 -i "tcp:${PORT}" | grep "\(:${PORT}->.*:\|:$PORT (LISTEN)$\)"

मैं पसंद करता हूं netstatक्योंकि यह तेज, संक्षिप्त है, और अन्य उपयोगकर्ताओं द्वारा खोले गए बंदरगाहों को सूचीबद्ध कर सकता है। (हालांकि इस तरह की प्रक्रियाओं के नाम और पीआईडी ​​को सूचीबद्ध करने के लिए अभी भी सुपरयुजर / उपयोगकर्ता विशेषाधिकारों की आवश्यकता होगी।)

आउटपुट

$ netstat -anp --numeric-ports | grep ":80\>.*:" 
tcp6       0      0 :::80           :::*            LISTEN      1914/apache2    

$ fuser -v "80/tcp"
                     USER        PID ACCESS COMMAND
80/tcp:              root       1914 F.... apache2
                     www-data  12418 F.... apache2
...

$ lsof -P -S 2 -i "tcp:80" | grep "\(:80->.*:\|:80 (LISTEN)$\)"
apache2  1914     root    4u  IPv6   11920      0t0  TCP *:80 (LISTEN)
apache2 12418 www-data    4u  IPv6   11920      0t0  TCP *:80 (LISTEN)
...

के उपयोग के grepदो मामलों में स्थानीय तरफ केवल बंदरगाह से मेल खाते हैं, और एक रिमोट बंदरगाह 80 के लिए खुला कनेक्शन को छोड़ (एक वैकल्पिक उपयोग करने के लिए किया जाएगा करने के लिए है -lके साथ netstat, या के साथ lsofउपयोग करने के लिए -sTCP:LISTEN, लेकिन क्योंकि वे ऊपर greps जैसे मैं भी पकड़ने के बाहर जाने वाले कनेक्शन से दिए गए बंदरगाह है, जो कभी-कभी ब्याज की हो सकती है।)

साथ lsofहम grep को संभव बनाने के -Pलिए प्रदर्शित :80करने के :httpलिए उपयोग करते हैं। -S 2विकल्प बलों lsofएक समय पर ढंग पूरा करने के लिए।

प्रक्रिया को मारना

यह मानते हुए कि हम उपयोग करना चाहते हैं netstat, हम PID को इस तरह से पकड़ सकते हैं:

$ netstat -anp --numeric-ports | grep ":80\>.*:" | grep -o "[0-9]*/" | sed 's+/$++'
1914
...

और हम उन PID को भी पास कर सकते हैं kill:

... | xargs -d '\n' kill -KILL

हालाँकि, रेग्जाप्स का उपयोग करते समय अक्सर गलत पॉजिटिव होने की संभावना होती है, इसलिए मैं सिर्फ शुरुआती आउटपुट को देखने की सलाह दूंगा netstatऔर फिर मैन्युअल रूप से निर्णय लेना चाहिए कि क्या चलाना है या नहीं:

$ kill -KILL 1914

यह सभी देखें

मेरे पास एक और स्क्रिप्ट है, listopenportsजिसमें रुचि हो सकती है।


3

आपको पहले ही पता चल गया है कि किस प्रक्रिया को मारना है: यह प्रक्रिया संख्या है 20570और इसके बाइनरी का नाम है httpdजैसा कि आउटपुट की पंक्ति के अंत में लिखा गया है netstat। आप इसे संख्या kill 20570या नाम से मार सकते हैं, killall httpdलेकिन मैं इसे इस तरह से करने की सिफारिश नहीं करूंगा।

1024 से कम पोर्ट का मानकीकृत उपयोग (सामान्य रूप से) होता है, आप उन और कई अन्य लोगों को देख सकते हैं less /etc/services। पोर्ट 80 के लिए प्रविष्टि पर भी टिप्पणी की गई है:

http            80/tcp          www             # WorldWideWeb HTTP

तो यह शायद एक वेबसर्वर है। आपके पास जो नाम है httpdऔर man httpdआपको बड़े संकेत देने चाहिए कि यह अपाचे बाइनरी है जो फिट बैठता है। अपाचे बड़े खिलाड़ियों में से एक है, इसमें कुछ आरामदायक प्रबंधन-कार्यक्रम उपलब्ध हैं लेकिन आपको कार्रवाई शुरू करने / रोकने की आवश्यकता नहीं है।

आपके पास मिंट है? एक सामान्य डेस्कटॉप के साथ? फिर Control Centerअंडर में देखें Systemऔर क्लिक करें Services। आपको वहां कुछ भी करने के लिए व्यवस्थापक होने की आवश्यकता है। नीचे स्क्रॉल करें, जब तक कि आपको "वेबसर्वर" लेबल वाला कुछ न मिल जाए (मेरे पास अपाचे के बजाय लाइटटैप्ड है और ठीक से पता नहीं है कि अपाचे प्रवेश कैसा दिखेगा) और इसे अनचेक करें।

यदि आप इसे अस्थायी रूप से सांत्वना में बंद करना चाहते हैं

sudo service stop httpd

और से शुरू करें sudo service start httpdservice --status-allसभी सेवाओं की एक सूची देता serviceहै जिसके बारे में जानता है और संभाल सकता है। किसी सेवा को फिर से शुरू करने के लिए एक शॉर्टकट (जो है: इसे रोकें और इसे उसी क्रम में शुरू करें) सेवा का नाम होने के service --full-restart SERVICEसाथ है SERVICE, उदाहरण के लिए: httpdअपाचे के मामले में।

आपके द्वारा पाए जाने वाले अधिकांश कार्यक्रमों netstatको उसी तरह से संभाला जा सकता है। कुछ नहीं कर सकते हैं और कुछ के पास एक पेज भी नहीं है, लेकिन वे दुर्लभ हैं।


0

ऐसा करने का एक सरल तरीका है। सबसे पहले देखें कि कौन सी प्रक्रिया नेटस्टैट द्वारा पोर्ट 80 का उपयोग कर रही है :

netstat -ntl | grep 80

अब आपको प्रक्रिया का नाम मिल गया है और इस प्रक्रिया को किलॉल कमांड से मारना है :

killall -9 process name

'किंडल' कमांड का उपयोग करने के क्या खतरे हैं?
पीटर मोर्टेनसेन

2
-1 killallबिना स्पष्टीकरण या चेतावनी के।
guntbert

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