Lorsque j'exécute sudo kill -9 [PID]
avec l'ID de processus approprié, le processus s'arrête mais est ensuite redémarré et a un nouveau PID. J'essaie de tuer le mysqld
processus.
Comment puis-je imiter le moniteur d'activité en tuant un processus? Dans le moniteur d'activité, lorsque vous appuyez sur "Quitter le processus", le processus s'arrête définitivement, il est totalement terminé. Je pense que kill
cela fera la même chose non?
J'avais à la fois le moniteur d'activité et le terminal côte à côte pour voir si la commande fonctionne, mais chaque fois que je le fais sudo kill -9 [PID]
, le processus dans le moniteur d'activité ne disparaît pas, il se rafraîchit simplement avec un nouveau PID.
Alors ... comment puis-je tuer le mysqld
processus via le terminal?
Réponses:
Le processus que vous tuez est probablement géré par launchd , la bonne façon de l'arrêter et de ne pas le redémarrer est d'utiliser
launchctl unload <path to plist>
. Le plist qui contrôle ce processus est dans/Library/LaunchDaemons
ou/System/Library/LaunchDaemons
. S'il s'agit d'un processus système et non du vôtre, vous devrez probablement l'utilisersudo
pour vous mettrelaunchctl
au travail comme vous le souhaitez.Une meilleure façon d'essayer de l'arrêter pourrait être;
la source
mysqld
processus. Je ne sais pas si cela fait partie de LaunchDaemons ... mais la commande suivante est la bonne façon d'arrêter le serveur de fonctionnersudo /usr/local/mysql/support-files/mysql.server stop
mais j'ai des problèmes avec cela, donc j'essaie de tuer le processus directement.kill -9
le lancement, il est probablement impliqué, même indirectement. vous pouvez le dire en utilisantlaunchctl list
sudo launchctl unload /Library/LaunchDaemons/com.oracle.oss.mysql.mysqld.plist
Quelques commentaires mentionnent que "launchd est probablement impliqué" - j'ai donc pensé que je mettrais cela comme une réponse supplémentaire. Comme le dit @ jarrod-roberson, vous pouvez vérifier si launchd est impliqué en exécutant d'abord
launchctl list | grep mysqld
.Une chose importante que vous apprenez ici est de savoir si MySQL a été installé avec Homebrew ou non - Brew stocke ses
launchctl
fichiers dans un emplacement différent de celui où OSX place les services "réguliers".Sur ma boite OSX, les
plist
fichiers sont dans~/Library/LaunchAgents/
donc j'ai couru:pour arrêter le serveur MySQL. J'avais déjà regardé
/Library/LaunchDaemons/
et je/Library/LaunchAgents
n'ai pas trouvé de fichier avecmysqld
son nom.Vous pouvez également installer un système basé sur le brassage appelé
services
, pour gérer toutes les applications de services installés par Brew, comme décrit dans cet article - http://robots.thoughtbot.com/starting-and-stopping-background-services-with-homebrew I je n'ai pas essayé cela moi-même, donc YMMV.la source
/usr/local/opt/mysql/homebrew.mxcl.mysql.plist
J'ai essayé de tuer le processus en lui envoyant le
TERM
signal, et cela a fonctionné. La commande était:la source
Pour moi, cela a fonctionné une fois que j'ai compris quelle étiquette je cherchais.
la source
Déchargez le service et arrêtez le démon:
Chargez le service et démarrez le démon:
la source
com.oracle.oss.mysql.mysqld.plist
mon MySQL local a été installé à partir du téléchargement depuis MySQL, pas via homebrew.Quel processus essayez-vous de tuer? Certains processus sous Mac OS X (par exemple, le Dock, certains processus système) réapparaissent automatiquement s'ils sont tués.
la source
mysqld
processuslaunchd
, alors, qui le redémarrera si le processus se termine.J'ai résolu la modification du fichier /Library/LaunchDaemons/com.mysql.mysql.plist, en changeant l'attribut true en false
la source
Un processus en cours d'exécution sur votre machine bloque mysql. Courir
ps auxwww | grep mysql
alors fais
kill -15 {PID}
Mon processus qui le bloquait était _mysql
la source