W terminalu uruchamiam program, z którym nie mogę uciec Ctrl- Ci którego chcę zabić. Jak mogę znaleźć jego PID?
command-line
process
Jjed
źródło
źródło
Odpowiedzi:
Otwórz inny terminal i uruchom,
ps ax | grep foo
gdzie foo to nazwa niereagującego programu. Powinno to zwrócić wiersz wyniku, który wygląda mniej więcej tak:Pierwsze pole każdego wiersza wyniku to liczba reprezentująca identyfikator procesu dopasowanego programu
grep
(możesz bezpiecznie zignorować ostatni, który reprezentujegrep
siebie.Aby zatrzymać proces naruszający, wykonaj:
kill pid
gdzie pid jest identyfikatorem procesu programu. Być może będziesz musiał użyć oceny, które z dopasowań należykill
edytować, lub możesz użyćtop
zamiast tego.kill
Samo użycie wysyła SIGTERM, który powinieneś najpierw wypróbować, ponieważ pozwala programowi odpowiednio wyczyścić po sobie. Jeśli SIGTERM nie powiedzie się, spróbuj SIGHUP, który jest stonger medycyny:kill -HUP pid
. Jeśli wszystko inne zawiedzie, wyślij SIGKILL. Ale powinieneś to zrobić tylko w ostateczności, ponieważ SIGKILL powoduje, że jądro natychmiast kończy proces bez możliwości czyszczenia. Może to czasami powodować uszkodzenie danych lub inne problemy. Ponownie wyślij SIGKILL tylko w ostateczności. Aby to zrobić, zróbkill -KILL pid
lubkill -9 pid
.Jeśli korzystasz z interfejsu graficznego, oczywiście nie musisz oszukiwać za pomocą tych szalonych poleceń z wiersza poleceń, aby wykonać zadanie. Po prostu otwórz „Monitor systemu”, przejdź do zakładki Procesy, wybierz proces, który chcesz zatrzymać (Hm, czy może to być procesor wykorzystujący 90% CPU?) I kliknij go prawym przyciskiem myszy. Ponieważ proces jest już zatrzymany (to jest problem, prawda?) Wybierz Zakończ proces lub Zabij proces z wyświetlonego menu.
źródło
kill -9
jest złą radą. Zredagowałem odpowiedź, aby ją poprawić.ping
poleceniem isleep
. Według unix.stackexchange.com/a/275826/72988 nie jest to możliwe bez Ubuntumultiplexer
.Nie sądzę, aby były potrzebne takie długie polecenia, kiedy można wykonać te same polecenia za pomocą pgrep, pkill, pidof itp ...
pgrep:
OPIS: pgrep przegląda obecnie uruchomione procesy i wyświetla identyfikatory procesów, które pasują do kryteriów wyboru na standardowe wyjście. Wszystkie kryteria muszą być zgodne. Na przykład,
Aby znaleźć proces o nazwie sshd należący do roota.
Wymień procesy należące do demona root OR.
pidof:
OPIS :
Pidof znajduje identyfikator procesu (pID) wymienionych programów. Drukuje te identyfikatory na standardowym wyjściu.
składnia: pidof nazwa_programu
Aby zabić program za pomocą pid, użyj przykładu pkill:
-f
flag: Przeszukuje nazwę procesu (patrz man pkill)-o
flaga: Wybierz tylko najstarszy z pasujących procesów.-n
flag: Wybierz tylko najnowszy z pasujących procesów.-l
flag: Podaj nazwę procesu oraz identyfikator procesu.źródło
Najłatwiejszym sposobem poznania pid działającego programu jest użycie:
Na przykład, jeśli uruchomiłeś vima i chcesz poznać jego pid:
Pamiętaj, że musisz podać dokładną nazwę programu, który został uruchomiony.
Na przykład, jeśli uruchomisz vi i
pidof vim
wykonasz, nie uzyskasz poprawnych wyników.Więcej informacji można znaleźć na
pidof
stronie podręcznika użytkownika.źródło
pidof mysqld
zwraca PID. Jednak po wpisaniupidof Mariadb
nic nie jest zwracane. Czy to ten sam PID dla MariaDB i MySQL?Odkryłem, że miło jest używać wyszukiwania bez rozróżniania wielkości liter, dodając „-i” i używając „aux” zamiast „ax”, aby uzyskać bardziej opisowy wynik:
Jeśli chcesz zabić wszystkie procesy, których możesz użyć:
To potężne zabójstwo. Upuść „-9”, jeśli chcesz miękkie zabicie.
źródło
ps aux | grep -i firefox...
proces, ponieważ zawiera on tekstfirefox
w swoim poleceniu!grep -i firefo[x]
aby dopasować tylko firefox-9
zkill
patrz tutaj dla wyjaśnieniaJeśli chcesz tylko pid (przydatne w skryptach autokill itp.)
źródło
Dla tych z Ubuntu 16.04 LTS, ty musi używać
ps ax
, a nie tylkops
w wierszu polecenia, w przeciwnym razie po prostu procesy tarła z konkretnym przypadku terminali, że jesteś w. (Zwykle po prostu „bash” [skorupę jesteś w ] i „ps” [co właśnie uruchomiłeś])źródło
ps -e
(pokazuje wszystko) ips -ejH
(pokazuje drzewo procesów).Możesz także otworzyć inny terminal (lub przełączyć na inny tty) i uruchomić
top
, który jest w zasadzie tekstową wersją Monitora systemu. Pierwsza kolumna zawiera PID każdego uruchomionego procesu, który można zabić, naciskając K, wprowadzając PID, a następnie wprowadzając sygnał numeryczny do wysłania.źródło
Mógłbyś:
najpierw dwie rury pobierają informacje o procesie, następnie staramy się uzyskać kolumnę PID za pomocą oldschoolowego cięcia, a następnie dajemy wynikowy PID do zabicia.
źródło
kill -9
to największa broń, którą musisz zabić. Najpierw powinieneś spróbować łagodniejszego sygnału, zanim skorzystasz z SIGKILL, aby dać temu procesowi szansę na oczyszczenie jego zasobów.lub
wypisz wszystkie pid z odpowiednim procesem
źródło