macos मैक पर लॉकिंग पोर्ट 3000 को ढूंढें(और मारें)




process (13)

खोजें:

[sudo] lsof -i :3000

मार:

kill -9 <PID>

मैं उन प्रक्रियाओं को कैसे ढूंढूं जो मेरे टीसीपी बंदरगाहों को सुनता / उपयोग करता है? मैं मैक ओएस एक्स पर हूँ।

कभी-कभी, क्रैश या कुछ बग के बाद, मेरी रेल ऐप बंदरगाह 3000 लॉक कर रहा है। मुझे इसे ps -ef का उपयोग नहीं मिल रहा है ... मैं बेवकूफ चीज़ कैसे ढूंढूं और इसे मार डालूं, क्रूरता से ...?

करते समय

rails server

मुझे मिला

पता पहले से ही उपयोग में है - बांध (2) (Errno :: EADDRINUSE)

2014 अपडेट:

नीचे दिए गए कुछ उत्तरों को पूरा करने के लिए: हत्या आदेशों को निष्पादित करने के बाद, पिड फ़ाइल को हटाने के लिए आवश्यक rm ~/mypath/myrailsapp/tmp/pids/server.pid


खुला कनेक्शन खोजें

lsof -i -P | grep -i "सुनो"

प्रक्रिया आईडी द्वारा मार डालो

मार -9 'पीआईडी'


ओएस-एक्स एल कप्तान पर कमांड लाइन में निष्पादित करें:

kill -kill `lsof -t -i tcp:3000`

एलएसओफ़ ​​का टेर्स विकल्प सिर्फ पीआईडी ​​देता है।


lsof -P | grep ':3000' | awk '{print $2}'

यह आपको मैकोज़ पर परीक्षण किया गया केवल पिड देगा।


इसे प्राप्त करने के संभावित तरीके:

चोटी

शीर्ष आदेश आपके सिस्टम के संसाधन उपयोग को देखने और सबसे अधिक सिस्टम संसाधनों को लेने वाली प्रक्रियाओं को देखने का पारंपरिक तरीका है। शीर्ष शीर्ष पर सबसे अधिक CPU का उपयोग करने वाले लोगों के साथ प्रक्रियाओं की एक सूची प्रदर्शित करता है।

ps

Ps कमांड चल रही प्रक्रियाओं को सूचीबद्ध करता है। निम्न आदेश आपके सिस्टम पर चल रही सभी प्रक्रियाओं को सूचीबद्ध करता है:

ps -A

आप किसी भी अन्य कमांड का उपयोग किए बिना एक विशिष्ट प्रक्रिया की खोज के लिए grep के माध्यम से आउटपुट पाइप भी कर सकते हैं। निम्न आदेश फ़ायरफ़ॉक्स प्रक्रिया की खोज करेगा:

ps -A | grep firefox

एक कार्यक्रम में सिग्नल पास करने का सबसे आम तरीका हत्या आदेश के साथ है।

kill PID_of_target_process

lsof

सभी खुली फाइलों और उन प्रक्रियाओं की सूची जो उन्हें खोलती हैं।

lsof -i -P | grep -i "listen"
kill -9 PID

या

 lsof -i tcp:3000 

~/.bash_profile जोड़ें:

function killTcpListen () {
  kill -QUIT $(sudo lsof -sTCP:LISTEN -i tcp:$1 -t)
}

फिर source ~/.bash_profile और चलाएं

killTcpListen 8080


पोर्ट 3000 का उपयोग करके प्रक्रिया के पीआईडी ​​निकालने और इसे मारने के लिए एक लाइनर।

lsof -ti:3000 | xargs kill

-टी ध्वज एलएसओफ़ ​​आउटपुट से पीआईडी ​​को हटा देता है, जिससे इसे मारना आसान हो जाता है।


sindresorhus के fkill टूल का उपयोग करके, आप यह कर सकते हैं:

$ fkill :3000

अपने .bash_profile , 3000 प्रक्रिया को terminate करने के लिए शॉर्टकट बनाएं:

terminate(){
  lsof -P | grep ':3000' | awk '{print $2}' | xargs kill -9 
}

फिर, अवरोधित $terminate करें को कॉल करें।


आपको टर्मिनल का उपयोग करके इस कोड को आजमाया जाना चाहिए:

$ killall -9 ruby

आप lsof -i:3000 उपयोग कर सकते हैं।

वह "सूची खोलें फ़ाइलें" है। यह आपको प्रक्रियाओं की एक सूची देता है और वे कौन सी फाइलें और बंदरगाहों का उपयोग करते हैं।


मेरे लिए कुछ भी काम नहीं किया। मेरे अनुभव के साथ कोई और निम्नलिखित निम्नलिखित कोशिश कर सकता है (मेरे लिए काम किया):

चलाएँ:

lsof -i :3000 (where 3000 is your current port in use)

फिर रिपोर्ट किए गए पीआईडी ​​की स्थिति की जांच करें:

ps ax | grep <PID>

आखिरकार, "इसके साथ शुरूआत करें":

kill -QUIT <PID>

बंदरगाह पर प्रक्रिया को मारने के तरीकों में से एक है पायथन पुस्तकालय का उपयोग करना: फ्रीपोर्ट ( https://pypi.python.org/pypi/freeport/0.1.9 )। एक बार स्थापित, बस:

# install freeport
pip install freeport

# Once freeport is installed, use it as follows
$ freeport 3000
Port 3000 is free. Process 16130 killed successfully




process