Como localizar e parar um processo em um Mac

11

Como posso encontrar o id do processo e parar o processo que está sendo executado na porta 8080 em um Mac?

No Ubuntu isso funciona:

ps -aux

e posso encontrar o processo e executar:

kill -9 pid

ps -aux parece não funcionar, como posso fazer isso no Mac OS X Lion?

    
por codecompleting 30.01.2012 / 18:33

5 respostas

16

Por razões históricas, as opções de ps são uma bagunça emaranhada e inconsistente. No OS X Lion, qualquer um deles deve funcionar:

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

Eu não tenho uma caixa do Ubuntu para testar, mas de acordo com a página de manual , ps -aux não é o caminho certo para fazer isso:

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.
    
por 30.01.2012 / 18:48
5

Use Activity Monitor .

Applications - > Utilities - > Activity Monitor

    
por 30.01.2012 / 19:17
4

Se você deseja encontrar e eliminar todos os processos que estão em conformidade com uma string, você também pode usar o seguinte em um Mac OSX:

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

Basicamente, o que isso fará é encontrar (grep) todos os processos atualmente em execução no seu sistema, o AWK obtém o PID, que no comando PS é a segunda coluna e o último recebe os argumentos do AWK e mata os processos.

Use o SUDO, somente se o usuário atual não tiver alguns direitos para eliminar um processo e se você tiver acesso ao SUDO em seu sistema.

    
por 05.05.2014 / 00:05
2

Acredito que ps -ef no Mac é quase equivalente a ps -aux no linux.

Para obter o que o PID tem a porta 8080 em uso: lsof -P | grep 8080

Os campos são mapeados para:

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

Eu iniciei o ttcp -rs , que escuta na porta 5001.

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

e, de fato, o PID 27999 corresponde ao PID do processo ttcp que eu iniciei.

    
por 02.05.2013 / 03:49
1

Para se manter atualizado, para o macOS:

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

Para Linux:

ps -ax | grep python | awk '{print "sudo kill -9",  $1}' | sh
    
por 14.06.2018 / 05:38