so beenden Sie den Prozess in Mac OS X und lassen ihn nicht von selbst neu starten

Wenn ich sudo kill -9 [PID] mit der richtigen Prozess-ID ausführe, stoppt der Prozess, wird dann aber neu gestartet und hat eine neue PID. Ich versuche, den Prozess mysqld 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 dauerhaft nicht mehr ausgeführt und vollständig beendet. Ich denke, dass kill dasselbe richtig machen wird?

Ich hatte sowohl den Aktivitätsmonitor als auch das Terminal nebeneinander, um zu sehen, ob der Befehl funktioniert, aber jedes Mal, wenn ich sudo kill -9 [PID], verschwindet der Prozess im Aktivitätsmonitor nicht, sondern wird nur mit einer neuen PID aktualisiert.

So... wie töte ich den Prozess mysqld über das Terminal?

Author: ChrisF, 2010-07-02

8 answers

Der Prozess, den Sie beenden, wird wahrscheinlich von launchd verwaltet, der richtige Weg, um ihn zu stoppen und nicht neu zu starten, ist die Verwendung von launchctl unload <path to plist>. Die Plist, 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 wahrscheinlich sudo, damit launchctl wie gewünscht funktioniert.

Einer besseren Art und Weise versuchen und zu stoppen, könnte es sein;

${MYSQL_HOME}/bin/mysqladmin -u root -proot shutdown > /dev/null 2>&1
 25
Author: ,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/techietown.info/template/agent.layouts/content.php on line 61
2010-07-02 17:16:27

Ein paar Kommentare erwähnen, dass "launchd wahrscheinlich beteiligt ist" - also dachte ich, ich würde dies als zusätzliche Antwort veröffentlichen. Wie @jarrod-roberson sagt, können Sie überprüfen, ob launchd beteiligt ist, indem Sie zuerst launchctl list | grep mysqld ausführen.

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 OSX die "regulären" Dienste ablegt.

In meiner OSX-Box befinden sich die plist - Dateien in ~/Library/LaunchAgents/, also habe ich ran:

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

Um den MySQL-Server zu stoppen. Ich hatte zuvor in /Library/LaunchDaemons/ und /Library/LaunchAgents gesucht, aber keine Datei mit mysqld in ihrem Namen gefunden.

Sie können auch ein Brew-basiertes System namens services installieren, um alle von Brew installierten Dienstanwendungen zu verwalten, wie in diesem Beitrag beschrieben - http://robots.thoughtbot.com/starting-and-stopping-background-services-with-homebrew Ich habe das aber nicht selbst versucht, also YMMV.

 15
Author: sameers,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/techietown.info/template/agent.layouts/content.php on line 61
2014-11-07 19:25:20

Ich habe versucht, den Prozess zu beenden, indem ich ihm das Signal TERM gesendet habe, und das hat funktioniert. Der Befehl war:

sudo kill -15 {PID}
 13
Author: Hristo,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/techietown.info/template/agent.layouts/content.php on line 61
2011-08-06 22:29:35

Für mich hat das funktioniert, sobald ich herausgefunden habe, nach welchem Label ich gesucht habe.

launchctl list | egrep {DESIRED_LABEL}   
launchctl remove {DESIRED_LABEL}
 13
Author: silverdagger,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/techietown.info/template/agent.layouts/content.php on line 61
2018-06-20 18:11:32

Entlädt den Dienst und stoppt den Daemon:

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

Laden Sie den Dienst und starten Sie den daemon:

sudo launchctl load -w /Library/LaunchDaemons/com.mysql.mysql.plist
 7
Author: Osaev,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/techietown.info/template/agent.layouts/content.php on line 61
2015-10-01 13:42:54

Welchen Prozess versuchst du zu töten? Einige Prozesse in Mac OS X (z. B. das Dock, einige Systemprozesse) automatisch respawn, wenn sie getötet werden.

 2
Author: mipadi,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/techietown.info/template/agent.layouts/content.php on line 61
2010-07-02 16:36:30

Ich habe das Bearbeiten von /Library/LaunchDaemons/com gelöst.mysql.mysql.plist-Datei, Ändern des Attributs true in 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>
 1
Author: Mario,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/techietown.info/template/agent.layouts/content.php on line 61
2017-10-19 12:16:22

Auf Ihrem Computer wird ein Prozess ausgeführt, der MySQL blockiert. Run

ps auxwww | grep mysql

Dann mach

kill -15 {PID}

Mein Prozess, der es blockierte, war _mysql

 0
Author: Jonathan O,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/techietown.info/template/agent.layouts/content.php on line 61
2017-03-02 13:33:57