Como posso matar um processo pelo nome?


44

Às vezes, percebo que o processo foi Pythoninterrompido. Então eu vou matá-lo através do Activity Monitor e está tudo bem.

Eu gostaria de matar esse processo no terminal. No entanto, procurar o que PIDparece desnecessário, porque existe apenas um processo pelo nome Python.

É possível matar um processo por seu nome exclusivo?

Respostas:


52

Você deve conseguir executar o comando sudo killall Python.

Você precisa executar como root porque o Python pertence à raiz, não ao usuário.


Eu fiz isso:No matching processes belonging to you were found
gentmatt

1
O processo Python não pertence ao seu usuário. Experimente-o como root em vez disso: sudo killall Python.
HenningJ

1
@ HenningJ Sudo trabalhou por algum motivo. Acabei de ver que o processo me pertence. Eu poderia matar o processo sem sudoquando o matei usando PID. Por quê?
gentmatt

1
Eu estou pensando que é porque o uso de um PID não é específico do usuário / raiz, enquanto um nome de processo é. Eu vou editar esta resposta para refletir sudo.
Matt Love

Isso também trabalhou para vários processos com nomes idênticos, agradável
chrismarx

21
sudo killall -s SIGINT "process name"

Se você não pode ser um sudo, porque ele solicitará a senha e eu sinto que você não deseja isso em um script. pkill venha para o resgate :)

pkill -9 "process name"

5

Você pode matar aplicativos usando o Activity Monitor.app, sendo a solução da GUI. Isso seria uma simples "saída de força". No entanto, isso nem sempre funciona por motivos diferentes em algumas situações!

A solução de linha de comando, conforme mencionado no comentário acima, contém muito mais opções para o usuário. sudo killall Pythonou se for um processo de programa em execução, sudo killall /Applications/Whatever.appo processo também será encerrado.

Você também pode forçar a saída de um processo, usando o PID atribuído . No caso de Activity Monitor.app, seria kill 25794oukill -9 25794

insira a descrição da imagem aqui

Mais alguns detalhes:

O programa kill no Terminal simplesmente encerra um programa, como se fosse por controle remoto. (Até funciona quando você faz o SSH no seu Mac a partir de um local remoto. Siga o comando kill com o número de identificação do processo (PID curto) do programa que você deseja finalizar.

A menos que você também use o sudo, você pode matar apenas os programas que você "possui" - aqueles que estão sendo executados em sua conta. (O próprio sistema operacional - raiz - sempre executa programas próprios e é tecnicamente possível que outras pessoas, discando da estrada, estejam executando programas próprios, mesmo enquanto você estiver usando o Mac!)

A -9bandeira é uma “matança não capturável e não ignorável”. Em outras palavras, é um assassino de força industrial que não aceita pedidos de misericórdia do programa que você está matando.


5

Embora não usar PID, acho o seguinte para ser muito eficiente:

ps aux | grep "String or name of process"

Essa linha retorna uma série de informações sobre o (s) processo (s) de correspondência, e você pode killou o que quer que seja a partir daí.


2
pkill -f "process name"

Com base em https://stackoverflow.com/a/22334807/1243763


1
Existe um pidof no macOS? E por que não usar pkill, que não tem o problema do processo adicional?
nohillside

concordo e eu perdi isso. Eu tinha pidofbinário como alias não padrão de ps -e -o pid,args | grep -E "\b$1\b" | awk "{print \$1}" | tr '\n' ' '. Então, pkill -ffaz mais sentido.
Samir
Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.