Mam aplikację, która nie umrze: zniknęła ze stacji dokującej, ale okno pozostało (z piłką plażową, jeśli na niego kliknę). Nie używa procesora, ale chcę, żeby zniknął.
Czy istnieje coś silniejszego niż „Force Quit”, aby naprawdę zabić aplikację?
lion
macos
applications
Rozpoznać
źródło
źródło
SIGTERM
i to samo w oknie dialogowym i monitorze aktywności.Odpowiedzi:
Jeśli znasz nazwę aplikacji, możesz sprawdzić w Monitorze aktywności, czy nadal tam działa i wypróbować jej wymuszenie. Jeśli to nie zadziała, zanotuj identyfikator procesu aplikacji (pid). Idź do terminala i wpisz
kill [pid]
, zastępując „[pid]” numerem, który zanotowałeś wcześniej. Jeśli to nie zadziała, spróbuj,kill -3 [pid]
a jeśli to nie zadziałakill -9 [pid]
. Jeśli proces jest własnością innego użytkownika (jest to mało prawdopodobne), może być konieczne zastąpieniekill
gosudo kill
i wpisanie hasła po wyświetleniu monitu.Jeśli aplikacja nie wyświetla się w Monitorze aktywności lub nie możesz tego
kill
zrobić, okno może pozostać w innym miejscu i aplikacja po prostu nie działa. W takim przypadku czasami (nie zawsze) może działać dokillall SystemUIServer
lubkillall Dock
.Jeśli to nie zadziała, musisz się wylogować, ponownie zalogować lub uruchomić ponownie. Kilka razy, kiedy dotarłem do tego momentu, aplikacja była tak zablokowana, że uniemożliwiała wylogowanie lub wyłączenie, więc musiałem mocno zrestartować komputer.
źródło
sudo
, mimo że proces jest własnością mnie), bez zmian. Wpłyniekillall SystemUIServer
na inne otwarte aplikacje, takie jak zapominanie pozycji okien?kill -l
-3 to SIGQUIT, a -9 to SIGKILL („nie do złapania, nie do zapomnienia”).man kill
(który znajduje się w pierwszej 10 najlepszych komend UNIX-a), aby zobaczyć je wszystkie.Okno wymuszonego wyjścia
killall
ikill
wszystkie wysyłają domyślnie przetwarza sygnały TERM. Możesz użyć,killall -kill
jeśli to nie działa.Jeśli uruchomisz
sudo dtrace -n 'proc:::signal-send /pid/ { printf("%s -%d %d",execname,args[2],args[1]->pr_pid); }'
i zamkniesz aplikację z okna wymuszonego zakończenia, sygnał jest zwykle pokazywany jako -15 (TERM). Ale po zamknięciu procesu w tle (lub aplikacji, która nie jest wyświetlana w Docku) z Monitora aktywności, sygnał jest zwykle wyświetlany jako -9 (ZABIJ).źródło
SIGKILL
działa, aplikacja jest prawdopodobnie w nieprzerwanym trybie uśpienia i naprawdę nic nie możesz zrobić (poza ponownym uruchomieniem).Miałem sytuacje, w których Force Quit, Monitor aktywności
kill
i inne metody nie działały, a mój Mac nie mógł się z tego powodu wyłączyć.W tym przypadku
sudo shutdown -r now
zadziałało, gdy nic innego by nie działało, i jest prawdopodobnie lepsze niż wykonanie twardego wyłączenia za pomocą przycisku zasilania.źródło
Jak w powyższych odpowiedziach, najsilniejszym sposobem na zakończenie dowolnego procesu jest
SIGKILL
npkill -9 process_id
.Jednak istnieją procesy, jakie są po prostu niemożliwe, aby
Force Quit
niekill
. Nazywali jezombie
procesami.Oto krótki skrypt, który utworzy
zombie
proces na dwie minuty:Uruchom powyższy skrypt w terminalu, a otrzymasz dane wyjściowe, takie jak:
Jeśli sprawdzisz kolumnę statusu dla niemożliwego do zabicia procesu (w tym przypadku: 50571), zobaczysz
Z
flagę, co oznaczazombie
.Możesz spróbować wysłać dowolny
kill
sygnał (np.kill -9 50571
), A proces będzie nadal istniał. W każdym razie nie szkodzi to bardzo systemowi, ponieważ tak naprawdę nie istnieje - zajmuje tylko tabelę procesów.W powyższym przykładzie za 120 sekund zostanie wyczyszczone.
źródło
Oto co powinieneś zrobić:
Taki proces najlepiej usunąć w trybie awaryjnym, jeśli zamierzasz odinstalować.
Na zdrowie, Bryan
źródło