Wenn ich sudo kill -9 [PID]
mit der richtigen Prozess-ID starte, stoppt der Prozess, wird jedoch neu gestartet und hat eine neue PID. Ich versuche den mysqld
Prozess zu beenden .
Wie kann ich den Aktivitätsmonitor beim Beenden eines Prozesses nachahmen? Wenn Sie im Aktivitätsmonitor auf "Prozess beenden" klicken, wird der Prozess permanent angehalten und vollständig beendet. Ich kill
denke, das wird das Gleiche tun, oder?
Ich hatte sowohl den Aktivitätsmonitor als auch das Terminal nebeneinander, um zu prüfen, ob der Befehl funktioniert, aber jedes Mal sudo kill -9 [PID]
, wenn ich dies tue , wird der Prozess im Aktivitätsmonitor nicht abgebrochen, sondern nur mit einer neuen PID aktualisiert.
Also ... wie kann ich den mysqld
Prozess über das Terminal beenden?
Antworten:
Der Prozess, den Sie beenden , wird wahrscheinlich von launchd verwaltet . Der richtige Weg, ihn anzuhalten und nicht neu zu starten, besteht in der Verwendung
launchctl unload <path to plist>
. Die Liste, die diesen Prozess steuert, befindet sich entweder in/Library/LaunchDaemons
oder/System/Library/LaunchDaemons
. Wenn es sich um einen Systemprozess handelt und nicht um einen eigenen, müssen Sie ihn wahrscheinlich verwendensudo
, umlaunchctl
wie gewünscht an die Arbeit zu gehen.Ein besserer Weg, es zu stoppen, könnte sein;
quelle
mysqld
Prozess zu beenden . Ich bin nicht sicher, ob dies Teil von LaunchDaemons ist, aber der folgende Befehl ist der richtige Weg, um den Server am Laufen zu hindern,sudo /usr/local/mysql/support-files/mysql.server stop
aber ich habe Probleme damit, also versuche ich, den Prozess direkt abzubrechen.kill -9
dem launchd angepasst wird, ist es wahrscheinlich, wenn auch indirekt. Sie können sagen, indem Sielaunchctl list
sudo launchctl unload /Library/LaunchDaemons/com.oracle.oss.mysql.mysqld.plist
Ein paar Kommentare erwähnen, dass "launchd ist wahrscheinlich beteiligt" - also dachte ich, ich würde dies als zusätzliche Antwort ausgeben. Wie @ jarrod-roberson sagt, können Sie überprüfen, ob launchd beteiligt ist, indem Sie zuerst ausführen
launchctl list | grep mysqld
.Eine wichtige Sache, die Sie hier lernen, ist, ob MySQL mit Homebrew installiert wurde oder nicht - Brew speichert seine
launchctl
Dateien an einem anderen Ort als dort, wo OSX die "regulären" Dienste bereitstellt.Auf meiner OSX-Box befinden sich die
plist
Dateien in~/Library/LaunchAgents/
Also lief ich:um den MySQL Server zu stoppen. Ich hatte vorher nachgesehen
/Library/LaunchDaemons/
und/Library/LaunchAgents
keine Datei mitmysqld
dem Namen gefunden.Sie können auch ein auf
services
Brew basierendes System mit dem Namen installieren , um alle von Brew installierten Diensteanwendungen zu verwalten, wie in diesem Beitrag beschrieben - http://robots.thoughtbot.com/starting-and-stopping-background-services-with-homebrew I Ich habe das allerdings nicht selbst ausprobiert, also YMMV.quelle
/usr/local/opt/mysql/homebrew.mxcl.mysql.plist
Ich habe versucht, den Prozess zu beenden, indem ich das
TERM
Signal gesendet habe, und das hat funktioniert. Der Befehl lautete:quelle
Bei mir hat das geklappt, als ich herausgefunden habe, nach welchem Label ich gesucht habe.
quelle
Entladen Sie den Dienst und stoppen Sie den Dämon:
Laden Sie den Dienst und starten Sie den Daemon:
quelle
com.oracle.oss.mysql.mysqld.plist
Mein lokales MySQL durch Herunterladen von MySQL installiert wurde, nicht über Homebrew.Welchen Prozess versuchst du zu töten? Einige Prozesse in Mac OS X (z. B. das Dock, einige Systemprozesse) werden automatisch wiederhergestellt, wenn sie beendet werden.
quelle
mysqld
Prozesslaunchd
, der es neu startet, wenn der Prozess abbricht.Ich habe die Bearbeitung der Datei /Library/LaunchDaemons/com.mysql.mysql.plist gelöst und das Attribut true in false geändert
quelle
Auf Ihrem Computer wird ein Prozess ausgeführt, der mysql blockiert. Lauf
ps auxwww | grep mysql
dann mach
kill -15 {PID}
Mein Prozess, der es blockierte, war _mysql
quelle