13

How can I find the process id and stop the process that is running on port 8080 on a Mac?

On Ubuntu this works:

ps -aux

and I can find the process and run:

kill -9 pid

ps -aux didn't seem to work, how can I do this on Mac OS X Lion?

2

5 Answers 5

19

For historical reasons, ps's options are a tangled and inconsistent mess. On OS X Lion, any of these should work:

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

I don't have an ubuntu box handy to test, but according to the man page, ps -aux isn't the right way to do it there either:

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.
9

If you wish to find and kill all processes which conform to a string, you can also use the following on a Mac OSX:

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

Basically what this will do is that it will find (grep) all the processes currently running on your system matching the , AWK gets the PID, which in the PS command is the second column and the last one takes the arguments from AWK and kills the processes.

Use SUDO, only if the current user does not have some rights to kill a process and if you have SUDO access on your system.

5

Use Activity Monitor.

Applications -> Utilities -> Activity Monitor

3

I believe ps -ef on Mac is nearly equivalent to ps -aux on linux.

To get what PID has port 8080 in use: lsof -P | grep 8080

The fields map out to:

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

I started up ttcp -rs which listens on port 5001.

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

and indeed, PID 27999 corresponds to the PID of the ttcp process I launched.

4
  • 1
    You can also use ps aux (without the dash) on OS X. ps -ef includes different columns and uses a different format.
    – Lri
    Commented May 2, 2013 at 7:21
  • I happen not to currently have a linux login to compare; Years ago, IIRC, if -aux didn't give the expected output on a particular flavour of unix, then -ef would... AIX, Linux, SunOS used -aux, BSD, Solaris needed -ef for compatibility; I forget if IRIX was -aux or -ef. I don't recall what the major difference in the respective systems were... Commented May 3, 2013 at 3:27
  • OS X's aux and Ubuntu's aux and -aux use the same format, but Ubuntu's -aux prints a warning at the start.
    – Lri
    Commented May 3, 2013 at 7:37
  • 1
    Ahha... The split was between SysV and BSD implementations. Commented May 3, 2013 at 15:48
1

To stay up to date, for macOS:

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

For Linux:

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

You must log in to answer this question.

Not the answer you're looking for? Browse other questions tagged .