como matar processo no Mac OS X e não tê-lo reiniciar por conta própria

23

Quando executo sudo kill -9 [PID] com o ID de processo adequado, o processo é interrompido, mas depois é reiniciado e tem um novo PID. Estou tentando matar o processo mysqld .

Como posso imitar o Activity Monitor ao eliminar um processo? No Activity Monitor, quando você pressiona "Quit Process", o processo para de funcionar permanentemente, ele é totalmente terminado. Eu acho que kill vai fazer a mesma coisa né?

Eu tinha o Activity Monitor e o terminal lado a lado para ver se o comando funciona, mas toda vez que faço sudo kill -9 [PID] , o processo no Activity monitor não desaparece, ele apenas é atualizado com um novo PID .

Então ... como eu mato o processo mysqld via terminal?

    
por Hristo 02.07.2010 / 18:35

8 respostas

7

Eu tentei matar o processo enviando o sinal TERM , e isso funcionou. O comando foi:

sudo kill -15 {PID}
    
por 02.07.2010 / 19:25
19

O processo que você está matando provavelmente está sendo gerenciado por launchd , a maneira correta de pará-lo e tê-lo não reiniciar é usar launchctl unload <path to plist> . O plist que controla esse processo está em /Library/LaunchDaemons ou /System/Library/LaunchDaemons . Se for um processo do sistema e não um dos seus, provavelmente será necessário usar sudo para obter launchctl para funcionar conforme desejado.

Uma maneira melhor de tentar pará-lo pode ser:

${MYSQL_HOME}/bin/mysqladmin -u root -proot shutdown > /dev/null 2>&1
    
por 02.07.2010 / 18:37
9

Alguns comentários mencionam que "o launchd provavelmente está envolvido" - por isso pensei em colocar isso como uma resposta adicional. Como o @ jarrod-roberson diz, você pode verificar se o launchd está envolvido executando primeiro launchctl list | grep mysqld .

Uma coisa importante que você aprende aqui é se o MySQL foi instalado com o Homebrew ou não - Brew armazena seus arquivos launchctl em um local diferente daquele onde o OSX coloca os serviços "regulares".

Na minha caixa OSX, os arquivos plist estão em ~/Library/LaunchAgents/ Então eu corri:

launchctl unload -w ~/Library/LaunchAgents/homebrew.mxcl.mysql.plist

para parar o servidor MySQL. Eu tinha visto anteriormente em /Library/LaunchDaemons/ e /Library/LaunchAgents , mas não encontrei um arquivo com mysqld em seu nome.

Você também pode instalar um sistema baseado em distribuição chamado services , para gerenciar todos os aplicativos de serviços instalados pelo Brew, conforme descrito neste post - link Eu não tentei isso sozinho, então, então YMMV.

    
por 07.11.2014 / 20:25
5

Descarregue o serviço e pare o daemon:

sudo launchctl unload -w /Library/LaunchDaemons/com.mysql.mysql.plist

Carregue o serviço e inicie o daemon:

sudo launchctl load -w /Library/LaunchDaemons/com.mysql.mysql.plist
    
por 01.10.2015 / 14:49
3

Para mim, isso funcionou uma vez que eu descobri qual rótulo eu estava procurando.

launchctl list | egrep {DESIRED_LABEL}   
launchctl remove {DESIRED_LABEL}
    
por 20.09.2015 / 05:26
2

Qual processo você está tentando matar? Alguns processos no Mac OS X (por exemplo, o Dock, alguns processos do sistema) reaparecem automaticamente se forem mortos.

    
por 02.07.2010 / 18:36
1

Eu resolvi editar o arquivo /Library/LaunchDaemons/com.mysql.mysql.plist, alterando o atributo true para false

<!--?xml version="1.0" encoding="UTF-8"?-->
<plist version="1.0">
  <dict>
    <key>KeepAlive</key>
    <false />
    <key>Label</key>
    <string>com.mysql.mysqld</string>
    <key>ProgramArguments</key>
    <array>
      <string>/usr/local/mysql/bin/mysqld_safe</string>
      <string>--user=mysql</string>
    </array>
  </dict>
</plist>
    
por 19.10.2017 / 14:16
0

Existe um processo em execução na sua máquina que está bloqueando o mysql. Executar

ps auxwww | grep mysql

faça

kill -15 {PID}

Meu processo que estava bloqueando foi _mysql

    
por 02.03.2017 / 14:33