11

Как я могу найти идентификатор процесса и остановить процесс, работающий на порте 8080 на Mac?

На Ubuntu это работает:

ps -aux

и я могу найти процесс и запустить:

kill -9 pid

ps -aux , похоже, не работает, как я могу это сделать на Mac OS X Lion?

5 ответов5

16

По историческим причинам параметры ps - запутанный и противоречивый беспорядок. На OS X Lion любой из них должен работать:

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

У меня нет ubuntu box, удобного для тестирования, но, согласно man-странице, 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

Используйте Activity Monitor.

Applications -> Utilities -> Activity Monitor

5

Если вы хотите найти и уничтожить все процессы, которые соответствуют строке, вы также можете использовать следующее на Mac OSX:

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

По сути, это то, что он найдет (grep) все процессы, запущенные в настоящее время в вашей системе, соответствующие, AWK получает PID, который в команде PS является вторым столбцом, а последний принимает аргументы из AWK и убивает процессы.

Используйте SUDO, только если текущий пользователь не имеет каких-либо прав на удаление процесса и если у вас есть доступ к SUDO в вашей системе.

2

Я считаю, что ps -ef на Mac почти эквивалентен ps -aux на linux.

Чтобы узнать, какой PID использует порт 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)

и действительно, PID 27999 соответствует PID запущенного мной процесса ttcp .

1

Чтобы оставаться в курсе, для macOS:

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

Для Linux:

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

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .