Jak zabić procesy z terminala Linux
Kluczowe dania na wynos
- Zabicie procesu oznacza po prostu wymuszenie jego zakończenia i może być konieczne, gdy proces nie odpowiada lub zachowuje się nieprawidłowo.
- Linux i macOS mają polecenia takie jak kill, pkill i killall, które umożliwiają kończenie procesów na podstawie ich identyfikatora PID lub nazwy.
- Ważne jest, aby zachować ostrożność podczas zabijania procesów i upewnić się, że kończysz właściwy, aby uniknąć niezamierzonych konsekwencji.
Zabicie procesu jest czasami jedynym sposobem na pozbycie się go. Pomimo ostrej nazwy „zabicie” procesu oznacza po prostu „zmuszenie go do zakończenia”. Oto jak to zrobić z wiersza poleceń systemu Linux lub macOS.
Co to jest proces?
Uruchamianie programów, takich jak przeglądarka internetowa, procesy w tle powiązane ze środowiskiem graficznym i usługi systemu Linux, to wszystko procesy.
Możesz podzielić procesy na dwie grupy:
- Procesy pierwszoplanowe to te, które zostały uruchomione lub uruchomione przez użytkownika. Mogą znajdować się w oknie terminala lub mogą być aplikacją graficzną.
- Procesy w tle to wszystkie procesy uruchamiane automatycznie i niemające żadnej interakcji z użytkownikami. Nie oczekują wkładu od użytkowników ani nie przedstawiają im wyników ani wyników. Procesy w tle to coś takiego jak usługi i demony.
Jeśli procesy pierwszoplanowe to pracownicy teatru i aktorzy, procesy drugoplanowe to zespół „za kulisami”.
Gdy procesy zachowują się nieprawidłowo lub działają nieprawidłowo, mogą zająć zbyt dużo czasu procesora, zużywać pamięć RAM lub wejść w ciasną pętlę obliczeniową i przestać odpowiadać. Aplikacje graficzne mogą odmówić reagowania na kliknięcia myszą. Aplikacje terminalowe mogą nigdy nie powrócić do wiersza poleceń.
Co powoduje zabicie procesu?
„Zabicie” procesu oznacza po prostu „wymuszenie zakończenia procesu”. Może to być konieczne, jeśli proces odmawia odpowiedzi.
Linux udostępnia polecenia kill
, pkill
i killall
, które pozwalają to zrobić. Poleceń tych można używać z dowolnym typem procesu, graficznym lub wierszem poleceń, pierwszym planem lub tłem.
Rozkaz zabicia
Aby skorzystać z kill
, musisz znać identyfikator procesu (PID) procesu, który chcesz zakończyć. Polecenie ps
może zostać użyte do znalezienia PID procesu.
Aby ps
przeszukać wszystkie procesy, użyj -e
opcji (wszystkie procesy). Wskazane jest przepuszczenie wyjścia przez rurociąg less
, będzie go całkiem sporo. Wpisz ps
, spację, -e
, spację |
(znak potoku), kolejną spację, a następnie wpisz less
. Naciśnij Enter, aby wykonać polecenie.
ps -e | less
Otrzymasz listę procesów, która wygląda podobnie do poniższego zrzutu ekranu. Możesz wyszukiwać do przodu za less
pomocą /
klawisza i możesz wyszukiwać do tyłu za pomocą ?
klawisza.
Aby skupić się na procesie, który Cię interesuje, prześlij dane wyjściowe z ps
Through grep
i podaj nazwę — lub część nazwy — procesu.
ps -e | grep shutter
Po znalezieniu identyfikatora PID procesu, który chcesz zakończyć, przekaż go do polecenia kill
jako parametr. Aby zakończyć shutter
proces wskazany w poprzednim poleceniu, użyj tego polecenia:
kill 2099
Dowództwo kill
jest cichym zabójcą — nie daje żadnej informacji zwrotnej, czy się powiodło.
Działa również tak samo w przypadku zabijania procesów w systemie macOS .
Komenda pkill
Polecenie pkill
pozwala zabić proces — lub procesy — według nazwy. Nie ma potrzeby identyfikowania procesu poprzez PID. Aby użyć pkill
, podaj wyszukiwane hasło, którego pkill
używasz do sprawdzania listy uruchomionych procesów. Procesy dopasowywania zostają zakończone. Musisz więc mieć pewność, że wyszukiwane hasło zostało wpisane poprawnie.
Jako zabezpieczenie możesz użyć pgrep
polecenia przed jego użyciem pkill
. Polecenie pgrep
akceptuje także wyszukiwane hasło. Wyświetli listę PID każdego procesu pasującego do wyszukiwanego hasła. Jest to bezpieczne, ponieważ pgrep
nie wyśle do procesów żadnego sygnału zakończenia, a jeśli błędnie wpiszesz wyszukiwane hasło, nie zabijesz przez pomyłkę innego procesu. Możesz upewnić się, że wyszukiwane hasło zostało poprawnie przemyślane, zanim przekażesz je do pkill
. Obydwa pkill
i pgrep
traktują wyszukiwane hasło w ten sam sposób. Ich traktowanie jest tak podobne, że korzystają z tej samej strony podręcznika .
Załóżmy, że istnieje proces z „subq” w nazwie. Poleceniem posłużymy ps -u dave | grep
się do zajrzenia za kurtynę. Możesz zobaczyć, że „subq” będzie pasować do tego procesu i samego procesu. To było po to, żebyś mógł zobaczyć pełną nazwę procesu.
ps -u dave | grep subq
Załóżmy, że nasz użytkownik tego nie zrobił; wiedzą tylko, że nazwa procesu zawiera podciąg „subq”. Używają go pgrep
do sprawdzania, czy wyszukiwane hasło zawiera tylko jedno dopasowanie. Następnie używają tego wyszukiwanego hasła z pkill
.
pgrep subq
pkill subq
Możesz użyć pkill
do zabicia kilku procesów na raz. Tutaj użytkownik uruchamia pgrep
, aby sprawdzić, ile procesów uruchomił Chrome. Zabijają ich pkill
wszystkich. Następnie sprawdzają, pgrep
czy wszystkie zostały usunięte.
pgrep chrome
pkill chrome
pgrep chrome
Jeśli uruchomionych jest kilka procesów o tej samej nazwie, ale nie chcesz ich wszystkich zabić, możesz użyć pgrep
opcji -f
(wiersza poleceń), aby określić, który proces jest który. Prostym przykładem mogą być dwa ping
procesy. Chcesz zabić jednego z nich, ale nie drugiego. Możesz użyć ich wierszy poleceń, aby je rozróżnić. Zwróć uwagę na użycie cudzysłowów do zawijania parametru wiersza poleceń.
pgrep -f "ping 192.168.4.22"
pkill -f "ping 192.168.4.22"
Komenda zabicia
Ostrzeżenie : w systemach operacyjnych Solaris i OpenIndiana killall
polecenie zabije wszystkie procesy, które należą do Ciebie. Jeśli jesteś rootem lub jeśli go wydałeś, sudo killall
zrestartujesz komputer! Podczas badań do tego artykułu to zachowanie zostało potwierdzone w najnowszej wersji OpenIndiana Hipster 2018.10.
Polecenie działa w podobny sposób jak polecenie killall
, ale z pewną różnicą. Zamiast przekazywać wyszukiwane hasło do polecenia, należy podać dokładną nazwę procesu.pkill
Nie można zapewnić częściowego dopasowania do nazwy procesu; musisz podać całą nazwę procesu, jak pokazano:
killall shutt
killall shutter
Opcja -y
(młodszy niż) pozwala zabić procesy, które działają krócej niż określony czas. Okres podaje się w liczbach, po których następuje jedna z następujących jednostek:
- s (sekundy)
- m (minuty)
- godz. (godziny)
- d (dni)
- w (tygodnie)
- M (miesiące, uwaga, duże „M”)
- y (lata)
Aby zakończyć proces o nazwie ana
, który właśnie został uruchomiony i pozostawić ana
działające starsze instancje, możesz użyć następujących parametrów z killall
, jeśli zareagowałeś w ciągu dwóch minut:
killall -y 2m ana
Opcja -o
(starsze niż) pozwala zabić procesy, które działają dłużej niż określony okres. To polecenie zabije wszystkie ssh
połączenia, które działały dłużej niż jeden dzień:
killall -o 1d sshd
Czy możesz zabić dowolny proces?
Polecenia te pozwolą Ci zidentyfikować i zakończyć błędne procesy z dokładnością i poprawnością. Możesz jednak być zbyt szczęśliwy i całkowicie możliwe jest zakończenie procesu, którego nie powinieneś.
Zawsze bądź ostrożny. Najpierw upewnij się, że proces, który chcesz zabić, jest naprawdę tym, którego chcesz. Po drugie, sprawdź dwukrotnie — zachowaj ostrożność i upewnij się, że docelowy proces jest tym, który chcesz zakończyć. Kontynuuj kończenie procesu, gdy będziesz zadowolony.
Jeśli przypadkowo zakończysz proces, nie jest to koniec świata. Najbardziej prawdopodobny rezultat jest taki, że coś ulegnie błędom i będziesz musiał ponownie uruchomić komputer, w przeciwnym razie możesz utracić pracę wykonaną w programie powiązanym z zakończonym procesem.
Polecenia Linuksa |
|
Akta |
tar · pv · cat · tac · chmod · grep · diff · sed · ar · człowiek · pushd · popd · fsck · dysk testowy · seq · fd · pandoc · cd · $PATH · awk · dołącz · jq · złóż · uniq · journalctl · ogon · stat · ls · fstab · echo · mniej · chgrp · chown · rev · wygląd · ciągi znaków · wpisz · zmień nazwę · zip · rozpakuj · montuj · umount · zainstaluj · fdisk · mkfs · rm · rmdir · rsync · df · gpg · vi · nano · mkdir · du · ln · łata · konwertuj · rclone · shred · srm · scp · gzip · chattr · wytnij · znajdź · umask · wc · tr |
Procesy |
alias · ekran · góra · ładny · renice · postęp · strace · systemd · tmux · chsh · historia · w · partia · darmowy · który · dmesg · chfn · usermod · ps · chroot · xargs · tty · pinky · lsof · vmstat · limit czasu · ściana · tak · zabij · uśpienie · sudo · su · czas · groupadd · usermod · grupy · lshw · zamknięcie · ponowne uruchomienie · zatrzymanie · wyłączenie · hasło · lscpu · crontab · data · bg · fg · pidof · nohup · pmap |
Sieć |
netstat · ping · traceroute · ip · ss · whois · fall2ban · bmon · dig · palec · nmap · ftp · curl · wget · who · whoami · w · iptables · ssh-keygen · ufw · arping · zapora sieciowa |
Dodaj komentarz