適切なプロセスIDを使用してSudo kill -9 [PID]
を実行すると、プロセスは停止しますが、その後再起動され、新しいPIDを持ちます。 mysqld
プロセスを強制終了しようとしています。
プロセスを強制終了するときにアクティビティモニターを模倣するにはどうすればよいですか?アクティビティモニターで[Quit Process]を押すと、プロセスは永久に実行を停止し、完全に終了します。私はkill
が同じことを正しく行うと思いますか?
コマンドが機能するかどうかを確認するために、アクティビティモニターと端末の両方を隣に配置しましたが、Sudo kill -9 [PID]
を実行するたびに、アクティビティモニターのプロセスが終了せず、新しいPIDで更新されます。
では、ターミナルを介してmysqld
プロセスを終了するにはどうすればよいですか?
TERM
シグナルを送信してプロセスを強制終了しようとしましたが、うまくいきました。コマンドは:
Sudo kill -15 {PID}
あなたが殺しているプロセスはおそらく launchd によって管理されています、それを停止して再起動しないための適切な方法はlaunchctl unload <path to plist>
を使用することです。そのプロセスを制御するplistは/Library/LaunchDaemons
または/System/Library/LaunchDaemons
にあります。システムプロセスであり、独自のプロセスではない場合は、Sudo
を使用してlaunchctl
を希望どおりに機能させる必要があります。
それを試して停止するより良い方法は、
${MYSQL_HOME}/bin/mysqladmin -u root -proot shutdown > /dev/null 2>&1
いくつかのコメントで、「launchdはおそらく関与している」と述べられているので、私はこれを追加の回答として提示したいと思いました。 @ jarrod-robersonが言うように、最初にlaunchctl list | grep mysqld
を実行すると、launchdが関係しているかどうかを確認できます。
ここで学ぶ重要なことは、MySQLがHomebrewとともにインストールされたかどうかです。Brewはlaunchctl
ファイルをOSXが「通常の」サービスを配置する場所とは別の場所に保存します。
私のOSXボックスでは、plist
ファイルは~/Library/LaunchAgents/
にあるので、実行しました:
launchctl unload -w ~/Library/LaunchAgents/homebrew.mxcl.mysql.plist
mySQLサーバーを停止します。以前に/Library/LaunchDaemons/
と/Library/LaunchAgents
を調べたことがありますが、名前にmysqld
が含まれているファイルは見つかりませんでした。
この投稿で説明されているように、services
というbrewベースのシステムをインストールして、Brewでインストールされたすべてのサービスアプリケーションを管理することもできます http://robots.thoughtbot.com/starting-and- stopping-background-services-with-homebrew 自分で試したことがないので、YMMVを使用します。
私にとって、これは私が探していたレーベルを見つけるとうまくいった。
launchctl list | egrep {DESIRED_LABEL}
launchctl remove {DESIRED_LABEL}
サービスをアンロードし、デーモンを停止します。
Sudo launchctl unload -w /Library/LaunchDaemons/com.mysql.mysql.plist
サービスをロードしてデーモンを開始します。
Sudo launchctl load -w /Library/LaunchDaemons/com.mysql.mysql.plist
殺そうとしているプロセスは何ですか? Mac OS Xの一部のプロセス(Dock、一部のシステムプロセスなど)は、強制終了されると自動的に再起動します。
/Library/LaunchDaemons/com.mysql.mysql.plistファイルの編集を解決し、属性trueを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>
Mysqlをブロックしているプロセスがマシン上で実行されています。走る
ps auxwww | grep mysql
それから
kill -15 {PID}
それをブロックしていた私のプロセスは_mysqlでした