Ketika saya menjalankan sudo kill -9 [PID]
dengan ID proses yang tepat, proses berhenti tetapi kemudian dimulai kembali dan memiliki PID baru. Saya mencoba untuk membunuh mysqld
prosesnya.
Bagaimana saya bisa meniru Monitor Aktivitas dalam membunuh suatu proses? Di Monitor Aktivitas, ketika Anda menekan "Keluar dari Proses", proses berhenti berjalan secara permanen, itu benar-benar dihentikan. Saya pikir itu kill
akan melakukan hal yang sama, kan?
Saya memiliki Monitor Aktivitas dan terminal di sebelah satu sama lain untuk melihat apakah perintah itu berfungsi, tetapi setiap kali saya melakukannya sudo kill -9 [PID]
, proses di Monitor aktivitas tidak hilang, hanya menyegarkan dengan PID baru.
Jadi ... bagaimana cara saya mematikan mysqld
proses melalui terminal?
Jawaban:
Proses yang Anda bunuh mungkin dikelola oleh launchd , cara yang tepat untuk menghentikannya dan tidak memulai kembali adalah menggunakan
launchctl unload <path to plist>
. Plist yang mengontrol proses itu ada di salah satu/Library/LaunchDaemons
atau/System/Library/LaunchDaemons
. Jika ini adalah proses sistem dan bukan milik Anda sendiri, maka Anda mungkin harus menggunakansudo
untuk mulailaunchctl
bekerja seperti yang diinginkan.Cara yang lebih baik untuk mencoba dan menghentikannya mungkin;
sumber
mysqld
prosesnya. Saya tidak yakin apakah itu bagian dari LaunchDaemons ... tetapi perintah berikut adalah cara yang benar untuk menghentikan server agar tidak berjalan,sudo /usr/local/mysql/support-files/mysql.server stop
tetapi saya mengalami masalah dengan itu, jadi saya mencoba untuk mematikan proses secara langsung.kill -9
launchd mungkin terlibat, bahkan jika secara tidak langsung. Anda bisa tahu dengan menggunakanlaunchctl list
sudo launchctl unload /Library/LaunchDaemons/com.oracle.oss.mysql.mysqld.plist
Beberapa komentar menyebutkan bahwa "launchd mungkin terlibat" - jadi saya pikir saya akan mengeluarkan ini sebagai jawaban tambahan. Seperti yang dikatakan @ jarrod-roberson, Anda dapat memeriksa apakah launchd terlibat dengan menjalankan pertama kali
launchctl list | grep mysqld
.Satu hal penting yang Anda pelajari di sini adalah apakah MySQL telah diinstal dengan Homebrew atau tidak - Brew menyimpan
launchctl
file -nya di lokasi yang berbeda dari tempat OSX menempatkan layanan "biasa".Di kotak OSX saya,
plist
file-file itu ada di~/Library/LaunchAgents/
Jadi saya berlari:untuk menghentikan server MySQL. Saya sebelumnya telah mencari
/Library/LaunchDaemons/
dan/Library/LaunchAgents
tetapi tidak menemukan file denganmysqld
namanya.Anda juga dapat menginstal sistem berbasis pembuatan bir yang disebut
services
, untuk mengelola semua aplikasi layanan yang diinstal oleh Brew, seperti yang dijelaskan dalam posting ini - http://robots.thoughtbot.com/starting-and-stopping-background-services-with-homebrew I belum mencoba ini sendiri, jadi YMMV.sumber
/usr/local/opt/mysql/homebrew.mxcl.mysql.plist
Saya mencoba untuk mematikan proses dengan mengirimkan
TERM
sinyal, dan itu berhasil. Perintahnya adalah:sumber
Bagi saya, ini berhasil setelah saya mengetahui label mana yang saya cari.
sumber
Bongkar layanan dan hentikan daemon:
Muat layanan dan mulai daemon:
sumber
com.oracle.oss.mysql.mysqld.plist
MySQL lokal saya diinstal dari pengunduhan dari MySQL, bukan melalui homebrew.Proses apa yang ingin Anda bunuh? Beberapa proses di Mac OS X (misalnya, Dock, beberapa proses sistem) secara otomatis respawn jika mereka terbunuh.
sumber
mysqld
proseslaunchd
, yang akan memulai kembali jika proses mati.Saya memecahkan pengeditan file /Library/LaunchDaemons/com.mysql.mysql.plist, mengubah atribut true menjadi false
sumber
Ada proses yang berjalan pada mesin Anda yang memblokir mysql. Menjalankan
ps auxwww | grep mysql
lalu lakukan
kill -15 {PID}
Proses saya yang memblokirnya adalah _mysql
sumber