जवाबों:
यह पता लगाने के कई तरीके हैं कि कौन सी रनिंग प्रक्रिया एक पोर्ट का उपयोग कर रही है।
फ्यूज़र का उपयोग करने से यह सुनने के पोर्ट से जुड़े कई उदाहरणों का पीआईडी प्रदान करेगा।
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
यहाँ एक ऑनलाइनर है जो चलाने के लिए कमांड दिखाता है:
echo kill $(sudo netstat -anp | awk '/ LISTEN / {if($4 ~ ":80$") { gsub("/.*","",$7); print $7; exit } }')
बदलें echo
द्वारा sudo
लिए प्रक्रिया वास्तव में मारे जाने के लिए।
echo
के लिएsudo
80
।
खुला बंदरगाहों लिस्टिंग के लिए तीन विकल्प में की पेशकश कर रहे 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
जिसमें रुचि हो सकती है।
आपको पहले ही पता चल गया है कि किस प्रक्रिया को मारना है: यह प्रक्रिया संख्या है 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 httpd
। service --status-all
सभी सेवाओं की एक सूची देता service
है जिसके बारे में जानता है और संभाल सकता है। किसी सेवा को फिर से शुरू करने के लिए एक शॉर्टकट (जो है: इसे रोकें और इसे उसी क्रम में शुरू करें) सेवा का नाम होने के service --full-restart SERVICE
साथ है SERVICE
, उदाहरण के लिए: httpd
अपाचे के मामले में।
आपके द्वारा पाए जाने वाले अधिकांश कार्यक्रमों netstat
को उसी तरह से संभाला जा सकता है। कुछ नहीं कर सकते हैं और कुछ के पास एक पेज भी नहीं है, लेकिन वे दुर्लभ हैं।
ऐसा करने का एक सरल तरीका है। सबसे पहले देखें कि कौन सी प्रक्रिया नेटस्टैट द्वारा पोर्ट 80 का उपयोग कर रही है :
netstat -ntl | grep 80
अब आपको प्रक्रिया का नाम मिल गया है और इस प्रक्रिया को किलॉल कमांड से मारना है :
killall -9 process name
killall
बिना स्पष्टीकरण या चेतावनी के।
-k
सभी मिलान प्रक्रियाओं-i
को मारने के लिए , और अंतःक्रियात्मक रूप से मारने के लिए स्विच है (प्रत्येक के लिए आपको संकेत देते हुए)।