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




process (11)

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

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

करते समय

rails server

मुझे मिला

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

2014 अपडेट:

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


  1. आप netstat कोशिश कर सकते हैं

    netstat -vanp tcp | grep 3000
    
  2. ओएसएक्स एल कैपिटन और नए (या यदि आपका नेटस्टैट -p समर्थन नहीं करता है) के लिए, lsof उपयोग lsof

    sudo lsof -i tcp:3000 
    

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

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

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


आप कमांड का उपयोग कर सकते हैं

lsof -h

पोर्ट खोजने के लिए इस कमांड का उपयोग है

-i i   select by IPv[46] address: [46][proto][@host|addr][:svc_list|port_list]

आपके मामले में दर्ज करें

lsof -i :3000

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

$ killall -9 ruby

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

चोटी

शीर्ष आदेश आपके सिस्टम के संसाधन उपयोग को देखने और सबसे अधिक सिस्टम संसाधनों को लेने वाली प्रक्रियाओं को देखने का पारंपरिक तरीका है। शीर्ष शीर्ष पर सबसे अधिक 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 

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

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

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


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

lsof -ti:3000 | xargs kill

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


बंदरगाह पर प्रक्रिया को मारने के तरीकों में से एक है पायथन पुस्तकालय का उपयोग करना: फ्रीपोर्ट ( 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

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

$ fkill :3000

~/.bash_profile जोड़ें:

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

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

killTcpListen 8080


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

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





process