पोर्ट 8080 का उपयोग करके जो भी प्रक्रिया है उसे मैं कैसे मार सकता हूं ताकि मैं योनि बना सकूं?


97

MacOSX पर, मैं पैकर का उपयोग वैग्रैंट बॉक्स बनाने के लिए कर रहा हूं, इसलिए मुझे इसे लगातार लाने और इसे फाड़ने की आवश्यकता है। मैं 'वेट्रेंट अप' करने का प्रयास कर रहा हूं, और मानक त्रुटि प्राप्त करता हूं क्योंकि पोर्ट उपयोग में है:

"वैग्रेंट इस वीएम पर निर्दिष्ट पोर्ट्स को अग्रेषित नहीं कर सकते, क्योंकि वे कुछ अन्य एप्लिकेशन से टकराएंगे जो इन पोर्ट पर पहले से ही सुन रहे हैं। 8080 पर फॉरवर्ड पोर्ट पहले से ही होस्ट मशीन पर उपयोग में है।"

समाधान काफी सरल लगता है: मुझे बस उस प्रक्रिया को पहचानने की आवश्यकता है जो कि पोर्ट 8080 को खुला रखती है और उस प्रक्रिया को मार देती है, ठीक है? यह इतना आसान नहीं है।


अगर मैं कमांड चलाता हूं:

nmap localhost -p 8080

मैं निम्नलिखित आउटपुट प्राप्त करता हूं:

PORT     STATE SERVICE
8080/tcp open  http-proxy

यदि मैं निम्नलिखित कमांड चलाता हूं:

top -o prt

1360 में उपयोग में उच्चतम बंदरगाह


यदि मैं निम्नलिखित कमांड चलाता हूं:

 netstat -tulpn | grep :8080

मुझे प्राप्त हुआ:

netstat: n: unknown or uninstrumented protocol

यदि मैं निम्नलिखित कमांड चलाता हूं:

lsof -i :8080

मुझे कोई आउटपुट नहीं मिला


यदि मैं अपने कंप्यूटर को पुनः आरंभ करता हूं, तो पोर्ट अब उपलब्ध है और मैं अब 'योनि' कर सकता हूं।

पोर्ट 8080 का उपयोग करके जो भी प्रक्रिया है उसे मैं कैसे मार सकता हूं ताकि मैं अपने कंप्यूटर को फिर से शुरू किए बिना योनि कर सकूं?

जवाबों:


172

यह मदद कर सकता है

lsof -n -i4TCP:8080 

पीआईडी ​​आउटपुट में दूसरा क्षेत्र है।

या कोशिश करें:

lsof -i -P

कोशिश करने के लिए धन्यवाद, लेकिन मैंने अपने सवाल में कहा कि मुझे lsof कमांड से कोई आउटपुट नहीं मिलता है।
जेसन करन

मैंने एक और संभावना जोड़ी है।
मार्क सेटेल

क्या आपके पास HP LaserJet प्रिंटर है? blog.hgomez.net/blog/2010/09/25/…
मार्क सेटेल

4
धन्यवाद मार्क! जो भी कारण के लिए, मेरे कंप्यूटर को पुनरारंभ करने के बाद, lsof कमांड कुछ भी नहीं आउटपुट कर रहे थे, और अब वे हैं। अब, lsof कमांड के सभी 3 काम कर रहे हैं और मैं प्रोसेस आईडी की पहचान कर सकता हूं और इसे मार सकता हूं: sudo किल -9 000 ... जहां 000 प्रोसेस आईडी है। प्रक्रिया का नाम "VBoxHeadless" है। अगर मुझे इस बारे में अधिक जानकारी मिलती है कि यह पहले क्यों काम नहीं कर रहा था तो मैं वापस रिपोर्ट करूंगा। FYI करें: मेरे पास कोई प्रिंटर नहीं है।
जेसन कर्रान

sudo lsof -n -i4TCP:8080रूट के स्वामित्व वाली प्रक्रियाओं को लेने का प्रयास करें ।
mpelzsherman

99

तेज और त्वरित समाधान:

lsof -n -i4TCP:8080

PIDदूसरा क्षेत्र है। फिर, उस प्रक्रिया को मारें:

kill -9 PID

कम तेज़ लेकिन स्थायी समाधान

  1. पर जाएं /usr/local/bin/ (खोजक में कमांड + शिफ्ट + जी का उपयोग कर सकते हैं)

  2. नाम से एक फाइल बनाओ stop। इसमें निम्न कोड पेस्ट करें:

#!/bin/bash
touch temp.text
lsof -n -i4TCP:$1 | awk '{print $2}' > temp.text
pidToStop=`(sed '2q;d' temp.text)`
> temp.text
if [[ -n $pidToStop ]]
then
kill -9 $pidToStop
echo "Congrates!! $1 is stopped."
else
echo "Sorry nothing running on above port"
fi
rm temp.text
  1. इस फाइल को सेव करें।
  2. फ़ाइल को निष्पादन योग्य बनाएं chmod 755 stop
  3. अब, टर्मिनल पर जाएँ और लिखें stop 8888(या कोई भी पोर्ट)

4
मैंने स्थायी समाधान की कोशिश की, लेकिन स्क्रिप्ट को चलाने का प्रयास करने पर 'अनुमति से वंचित' कर दिया गया। पहले भागकर हल किया chmod 755 stop
खानाबदोश

35

यदि उपर्युक्त स्वीकृत जवाब काम नहीं करता है, तो नीचे दिए गए समाधान का प्रयास करें। आप इसका उपयोग पोर्ट 8080 या किसी अन्य पोर्ट के लिए कर सकते हैं।

sudo lsof -i tcp:3000 

3000 जो भी चाहें पोर्ट से बदलें। उस प्रक्रिया को मारने के लिए कमांड के नीचे चलाएँ।

sudo kill -9 PID

PID वह प्रक्रिया ID है जिसे आप मारना चाहते हैं।

नीचे मैक टर्मिनल पर कमांड का आउटपुट है।

कमांड आउटपुट


1
मैं नियमित रूप से मारने की कोशिश करता हूँ (नहीं -9) पहले। -9 विकल्प के परिणामस्वरूप सॉकेट ठीक से बंद नहीं हो सकता है। प्रक्रिया को मार दिया जा सकता है लेकिन एक अन्य श्रोता इसके स्थान पर कांटा जाएगा।
स्टैकपशर

6

इसे स्क्रिप्ट करने के लिए:

pid=$(lsof -ti tcp:8080)
if [[ $pid ]]; then
  kill -9 $pid
fi

-tतर्क lsof "संक्षिप्त" जिसका अर्थ है कि यह केवल पीआईडी रिटर्न का उत्पादन करता है।


1
आप इसे $ पोर्ट में ले जाने वाले फ़ंक्शन को भी बना सकते हैं
mebada

अंत में एक ऐसा समाधान जो सीधे पीआईडी ​​को मिलता है। धन्यवाद आदमी, इस सूत्र का सही उत्तर होना चाहिए
ओलंपिल्ट्रे

3

मुझे इस कमांड को चलाने की जरूरत थी

sudo lsof -i :80 # checks port 8080

फिर मैं मिल गया

COMMAND   PID USER   FD   TYPE             DEVICE SIZE/OFF NODE NAME
acwebseca 312 root   36u  IPv4 0x34ae935da20560c1      0t0  TCP 192.168.1.3:50585->104.25.53.12:http (ESTABLISHED)

दिखाएँ कि कौन सी सेवा PID का उपयोग कर रही है

ps -ef 312

फिर मुझे यह मिल गया

  UID   PID  PPID   C STIME   TTY           TIME CMD
    0   312    58   0  9:32PM ??         0:02.70 /opt/cisco/anyconnect/bin/acwebsecagent -console

सिस्को वेब सुरक्षा एजेंट चलाने की स्थापना रद्द करने के लिए

sudo /opt/cisco/anyconnect/bin/websecurity_uninstall.sh

इसका श्रेय: http://tobyaw.livejournal.com/315396.html


3
sudo lsof -i:8080

उपरोक्त कमांड को चलाकर आप देख सकते हैं कि सभी नौकरियां क्या चल रही हैं।

kill -9 <PID Number>

PID (प्रक्रिया पहचान संख्या) दर्ज करें, ताकि यह उदाहरण को समाप्त / मार डाले।


2

यह सिस्को AnyConnect हो सकता है। जांचें कि क्या /Library/LaunchDaemons/com.cisco.anyconnect.vpnagentd.plist मौजूद है। फिर इसे लॉन्चक्टल के साथ अनलोड करें और / लाइब्रेरी / लॉन्चडैमन्स से हटा दें


1

आप पोर्ट का उपयोग करके प्रक्रिया को पहचानने और छोड़ने के लिए गतिविधि मॉनिटर का उपयोग भी कर सकते हैं।


1
मुझे यह कैसे करना है?
एमिल स्टेंस्ट्रम

MacOSX पर: गतिविधि मॉनिटर> नेटवर्क> पीआईडी ​​द्वारा क्रमबद्ध> अपना अवरुद्ध पोर्ट (जैसे 8080, 5000 आदि)> बाईं ओर क्लिक करें 'X'> पुष्टि करें कि आप प्रक्रिया छोड़ना चाहते हैं। केवल एकल सर्वर इंस्टेंसेस बनाए जाने के लिए अपने रन / बिल्ड कॉन्फ़िगरेशन को संपादित करने के लिए एक अच्छा विचार हो सकता है, अर्थात आपके उपयोग किए गए पोर्ट को फाड़ के मुक्त किया जाता है।
एलेक्स फ्रेडमैन

1

रन: nmap -p 8080 localhost(यदि आपके सिस्टम में अभी तक यह नहीं है तो मैकपार्ट्स या होमब्रे के साथ नैम्प स्थापित करें)

लोकलहोस्ट के लिए नैम स्कैन रिपोर्ट (127.0.0.1)

होस्ट ऊपर है (0.00034s विलंबता)।

लोकलहोस्ट के लिए अन्य पते (स्कैन नहीं किए गए): :: 1

पोर्ट स्टेट सर्विस

8080 / tcp खुला http-प्रॉक्सी

Daud: ps -ef | grep http-proxy

UID PID PPID C STIME TTY समय सीएमडी

640 99335 88310 0 12:26 pm ttys002 0: 00.01 grep http -xy "

भागो: ps -ef 640(अपने यूआईडी के साथ 501 बदलें)

/System/Library/PrivateFrameworks/PerformanceAnalysis.framework/Versions/A/XPCServices/com.apple.PerformanceAnalysis.animationperfd.xpc/Contents/MacOS/com.apple.PerformanceAnalysis.animationperfd

पोर्ट 8080 पर मैक ओएसएक्स का उपयोग एक्सकोड एसडीके के साथ स्थापित कुछ द्वारा किया जाता है


1

निम्न आदेश का उपयोग करें:

lsof -n -i4TCP:8080 | awk '{print$2}' | xargs kill -9

पोर्ट 8080 की प्रक्रिया आईडी को उठाया जाएगा और बलपूर्वक उपयोग करके मार दिया जाएगा kill -9


1

मुझे विभिन्न बंदरगाहों पर प्रक्रियाओं को मारने की आवश्यकता थी इसलिए मैंने एक बैश स्क्रिप्ट बनाई:

killPort() {
  PID=$(echo $(lsof -n -i4TCP:$1) | awk 'NR==1{print $11}')
  kill -9 $PID
}

बस इसे अपने .bashrc में जोड़ें और इसे इस तरह से चलाएं:

killPort 8080

आप जो चाहें पोर्ट नंबर पास कर सकते हैं


0

netstat का प्रयास करें

netstat -vanp tcp | grep 3000

यदि आपका नेटस्टैट -p का समर्थन नहीं करता है, तो lsof का उपयोग करें

sudo lsof -i tcp:3000 

Centos 7 उपयोग के लिए

netstat -vanp --tcp | grep 3000
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.