Gdy uruchamiam sudo kill -9 [PID]
z odpowiednim identyfikatorem procesu, proces zatrzymuje się, ale następnie jest ponownie uruchamiany i ma nowy PID. Próbuję zabić mysqld
proces.
Jak mogę naśladować Monitor aktywności podczas zabijania procesu? Po naciśnięciu przycisku „Zakończ proces” w monitorze aktywności proces trwale przestaje działać, jest całkowicie zakończony. Myślę, że kill
zrobi to samo, prawda?
Miałem zarówno Monitor aktywności, jak i terminal obok siebie, aby sprawdzić, czy polecenie działa, ale za każdym razem, gdy to robię sudo kill -9 [PID]
, proces w Monitorze aktywności nie znika, po prostu odświeża się z nowym PID.
Więc ... jak zabić mysqld
proces przez terminal?
Odpowiedzi:
Proces, który zabijasz, jest prawdopodobnie zarządzany przez uruchomienie , właściwym sposobem jest jego zatrzymanie i zrestartowanie
launchctl unload <path to plist>
. Lista kontrolująca ten proces znajduje się w jednym/Library/LaunchDaemons
lub/System/Library/LaunchDaemons
. Jeśli jest to proces systemowy, a nie własny, prawdopodobnie będziesz musiał użyć go,sudo
aby przejśćlaunchctl
do pracy zgodnie z oczekiwaniami.Lepszym sposobem może być zatrzymanie tego;
źródło
mysqld
proces. Nie jestem pewien, czy jest to część LaunchDaemons ... ale następujące polecenie to właściwy sposób na zatrzymanie działania serwera,sudo /usr/local/mysql/support-files/mysql.server stop
ale mam z tym problemy, więc próbuję zabić proces bezpośrednio.kill -9
uruchomieniu, prawdopodobnie jest zaangażowany, nawet jeśli pośrednio. możesz powiedzieć za pomocąlaunchctl list
sudo launchctl unload /Library/LaunchDaemons/com.oracle.oss.mysql.mysqld.plist
Kilka komentarzy wspomina, że „prawdopodobnie jest to związane z uruchomieniem” - więc pomyślałem, że przedstawię to jako dodatkową odpowiedź. Jak mówi @ jarrod-roberson, możesz sprawdzić, czy uruchomienie jest włączone przy pierwszym uruchomieniu
launchctl list | grep mysqld
.Ważną rzeczą, której się tutaj dowiadujesz, jest to, czy MySQL został zainstalowany z Homebrew, czy nie - Brew przechowuje swoje
launchctl
pliki w innym miejscu niż OSX, gdzie umieszcza się „zwykłe” usługi.W moim systemie OSX
plist
pliki są w~/Library/LaunchAgents/
Więc uruchomiłem:aby zatrzymać serwer MySQL. Wcześniej zaglądałem
/Library/LaunchDaemons/
i/Library/LaunchAgents
nie znalazłem pliku zmysqld
jego nazwą.Możesz również zainstalować system oparty na naparach o nazwie
services
, aby zarządzać wszystkimi aplikacjami usług zainstalowanymi przez Brew, jak opisano w tym poście - http://robots.thoughtbot.com/starting-and-stopping-background-services-with-homebrew I sam tego nie próbowałem, więc YMMV.źródło
/usr/local/opt/mysql/homebrew.mxcl.mysql.plist
Próbowałem zabić proces, wysyłając mu
TERM
sygnał, i to zadziałało. Polecenie brzmiało:źródło
Dla mnie to zadziałało, kiedy zorientowałem się, której etykiety szukam.
źródło
Zwolnij usługę i zatrzymaj demona:
Załaduj usługę i uruchom demona:
źródło
com.oracle.oss.mysql.mysqld.plist
Mój lokalny MySQL został zainstalowany z pobierania z MySQL, a nie przez homebrew.Jaki proces próbujesz zabić? Niektóre procesy w Mac OS X (np. Dock, niektóre procesy systemowe) automatycznie odradzają się, jeśli zostaną zabite.
źródło
mysqld
proceslaunchd
, który uruchomi go ponownie, jeśli proces umrze.Rozwiązałem edycję pliku /Library/LaunchDaemons/com.mysql.mysql.plist, zmieniając atrybut true na false
źródło
Na twoim komputerze działa proces, który blokuje mysql. Biegać
ps auxwww | grep mysql
to zrób
kill -15 {PID}
Mój proces, który go blokował, to _mysql
źródło