मैक पर किसी प्रक्रिया को कैसे खोजें और रोकें


11

मैं प्रक्रिया आईडी कैसे खोज सकता हूं और मैक पर पोर्ट 8080 पर चल रही प्रक्रिया को रोक सकता हूं?

उबंटू पर यह काम करता है:

ps -aux

और मैं इस प्रक्रिया को पा सकता हूं और चला सकता हूं:

kill -9 pid

ps -aux काम करने के लिए नहीं लग रहा था, मैं मैक ओएस एक्स शेर पर यह कैसे कर सकता हूं?



3
नहीं। कृपया, कृपया, kill -9 pidजब तक आपने अभी कोशिश नहीं की है, कृपया उपयोग न करें kill pid। कई प्रक्रियाओं में सिग्नल हैंडलर होंगे जो संसाधनों के अपने उपयोग, करीबी कनेक्शन और अन्य पूर्व-बंद कार्यों को साफ करेंगे। यदि आप -9 के साथ मारते हैं, तो प्रक्रिया सफाई किए बिना तुरंत मर जाती है। -9 के बिना हत्या ज्यादातर समय काम करेगी।
डग हैरिस

जवाबों:


16

ऐतिहासिक कारणों से, psविकल्प एक पेचीदा और असंगत गंदगी है। ओएस एक्स लायन पर, इनमें से किसी को भी काम करना चाहिए:

ps -ax
ps -e
ps aux # this displays in a different format

मेरे पास परीक्षण करने के लिए एक ubuntu बॉक्स काम नहीं है, लेकिन मैन पेज के अनुसार , ps -auxवहां ऐसा करने का सही तरीका नहीं है:

Note that "ps -aux" is distinct from "ps aux". The POSIX and UNIX
standards require that "ps -aux" print all processes owned by a user
named "x", as well as printing all processes that would be selected by
the -a option. If the user named "x" does not exist, this ps may
interpret the command as "ps aux" instead and print a warning. This
behavior is intended to aid in transitioning old scripts and habits. It
is fragile, subject to change, and thus should not be relied upon.


5

यदि आप सभी प्रक्रियाओं को ढूंढना और मारना चाहते हैं जो एक स्ट्रिंग के अनुरूप हैं, तो आप मैक ओएसएक्स पर निम्न का भी उपयोग कर सकते हैं:

ps aux | grep <string> | awk '{print $1}' | <sudo> xargs kill -9

मूल रूप से यह क्या करेगा कि यह (grep) आपके सिस्टम पर वर्तमान में चल रही सभी प्रक्रियाओं को खोज लेगा, AWK को PID मिलता है, जो PS कमांड में दूसरा कॉलम होता है और अंतिम AWK से तर्क लेता है और मारता है प्रक्रियाओं।

SUDO का उपयोग करें, केवल तभी जब वर्तमान उपयोगकर्ता के पास किसी प्रक्रिया को मारने के लिए कुछ अधिकार न हों और यदि आपके सिस्टम पर SUDO की पहुँच हो।


3

मेरा मानना ​​है कि ps -efमैक, ps -auxलिनक्स पर लगभग बराबर है ।

उपयोग करने के लिए पीआईडी ​​में 8080 पोर्ट है: lsof -P | grep 8080

खेतों का नक्शा:

[mini-nevie:~] nevinwilliams% lsof -P | head -1
COMMAND     PID          USER   FD     TYPE             DEVICE  SIZE/OFF    NODE NAME

मैंने शुरू किया ttcp -rsजो पोर्ट 5001 पर सुनता है।

mini-nevie:~] nevinwilliams% lsof -P | grep 5001
ttcp      27999 nevinwilliams    3u    IPv4 0xb70c1f66028d6961       0t0     TCP *:5001 (LISTEN)

और वास्तव में, पीआईडी ​​27999 उस ttcpप्रक्रिया के पीआईडी ​​से मेल खाती है जिसे मैंने लॉन्च किया था।


1
आप ps auxओएस एक्स पर (डैश के बिना) भी उपयोग कर सकते हैं। ps -efइसमें विभिन्न कॉलम शामिल हैं और एक अलग प्रारूप का उपयोग करता है।
LRI

वर्तमान में तुलना करने के लिए मेरे पास एक लिनक्स लॉगिन नहीं है; सालों पहले, IIRC, अगर -ऑक्स ने यूनिक्स के किसी विशेष स्वाद पर अपेक्षित आउटपुट नहीं दिया, तो -ईफ होगा ... AIX, Linux, SunOS का इस्तेमाल किया -ux, BSD, Solaris को-संगतता के लिए आवश्यक; मैं भूल जाता हूं कि क्या IRIX -aux या -ef था। मुझे याद नहीं है कि संबंधित प्रणालियों में मुख्य अंतर क्या था ...
नेविन विलियम्स

ओएस एक्स के ऑक्स और उबंटू के ऑक्स और -ऑक्स एक ही प्रारूप का उपयोग करते हैं, लेकिन उबंटू-ऑक्स शुरू में चेतावनी देता है।
LRI

1
आह ... विभाजन SysV और BSD कार्यान्वयन के बीच था।
नेविन विलियम्स

1

MacOS के लिए अद्यतित रहने के लिए:

ps -e | grep python | awk '{print "sudo kill -9",  $1}' | sh

लिनक्स के लिए:

ps -ax | grep python | awk '{print "sudo kill -9",  $1}' | sh
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.