Jak znaleźć i zatrzymać proces na komputerze Mac


11

Jak znaleźć identyfikator procesu i zatrzymać proces uruchomiony na porcie 8080 na komputerze Mac?

W Ubuntu działa to:

ps -aux

i mogę znaleźć proces i uruchomić:

kill -9 pid

ps -aux nie działa, jak mogę to zrobić w systemie Mac OS X Lion?



3
Nie. Nie. Proszę, nie używaj, kill -9 piddopóki nie spróbujesz kill pid. Wiele procesów będzie miało procedury obsługi sygnałów, które oczyszczą ich wykorzystanie zasobów, wyczyszczą połączenia i wykonają inne zadania przed zamknięciem. Jeśli zabijesz za pomocą -9, proces umiera natychmiast, bez czyszczenia. Zabijanie bez -9 będzie działać przez większość czasu.
Doug Harris

Odpowiedzi:


16

Z przyczyn historycznych psopcje to splątany i niespójny bałagan. W systemie OS X Lion dowolny z nich powinien działać:

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

Ja nie mam ubuntu box przydatny do badania, ale według strony człowieka , ps -auxnie jest dobrym sposobem, aby to zrobić jest albo:

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

Jeśli chcesz znaleźć i zabić wszystkie procesy zgodne z ciągiem, możesz także użyć następujących elementów w systemie Mac OSX:

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

Zasadniczo to spowoduje, że znajdzie (grep) wszystkie procesy aktualnie uruchomione w twoim systemie pasujące do, AWK pobiera PID, który w poleceniu PS jest drugą kolumną, a ostatnia bierze argumenty z AWK i zabija procesy

Użyj SUDO, tylko jeśli bieżący użytkownik nie ma niektórych uprawnień do zabicia procesu i jeśli masz dostęp SUDO w swoim systemie.


3

Wierzę, że ps -efna Macu jest prawie równoważny z ps -auxLinuksem.

Aby dowiedzieć się, jaki PID ma używany port 8080: lsof -P | grep 8080

Pola są mapowane na:

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

Uruchomiłem, ttcp -rsktóry nasłuchuje na porcie 5001.

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

i rzeczywiście, PID 27999 odpowiada PID ttcpprocesu, który uruchomiłem.


1
Możesz także użyć ps aux(bez myślnika) w OS X. ps -efzawiera różne kolumny i używa innego formatu.
Lri

Zdarza się, że obecnie nie mam loginu linux do porównania; Wiele lat temu, IIRC, jeśli -aux nie dałoby oczekiwanych danych wyjściowych dotyczących określonego smaku Uniksa, to -ef by ... AIX, Linux, SunOS użył -aux, BSD, Solaris -ef dla kompatybilności; Zapominam, czy IRIX był -aux czy -ef. Nie przypominam sobie, jaka była główna różnica w poszczególnych systemach ...
Nevin Williams

Aux w OS X oraz Aux i -aux Ubuntu używają tego samego formatu, ale -aux Ubuntu wyświetla na początku ostrzeżenie.
Lri

1
Ahha ... Podział był między implementacje SysV i BSD.
Nevin Williams

1

Aby być na bieżąco, w przypadku systemu macOS:

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

W systemie Linux:

ps -ax | grep python | awk '{print "sudo kill -9",  $1}' | sh
Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.