Jak zabić procesy z terminala Linux

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, pkilli 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 psmoże zostać użyte do znalezienia PID procesu.

Aby psprzeszukać wszystkie procesy, użyj -eopcji (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

polecenie ps w oknie terminala

Otrzymasz listę procesów, która wygląda podobnie do poniższego zrzutu ekranu. Możesz wyszukiwać do przodu za lesspomocą /klawisza i możesz wyszukiwać do tyłu za pomocą ?klawisza.

wyjście ps w mniejszym oknie

Aby skupić się na procesie, który Cię interesuje, prześlij dane wyjściowe z psThrough grepi podaj nazwę — lub część nazwy — procesu.

ps -e | grep shutter

Polecenie ps przesłane przez grep, aby znaleźć proces migawki

Po znalezieniu identyfikatora PID procesu, który chcesz zakończyć, przekaż go do polecenia killjako parametr. Aby zakończyć shutterproces wskazany w poprzednim poleceniu, użyj tego polecenia:

kill 2099

polecenie kill w oknie terminala

Dowództwo killjest 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 pkillpozwala zabić proces — lub procesy — według nazwy. Nie ma potrzeby identyfikowania procesu poprzez PID. Aby użyć pkill, podaj wyszukiwane hasło, którego pkilluż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ć pgreppolecenia przed jego użyciem pkill. Polecenie pgrepakceptuje także wyszukiwane hasło. Wyświetli listę PID każdego procesu pasującego do wyszukiwanego hasła. Jest to bezpieczne, ponieważ pgrepnie 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 pkilli pgreptraktują 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 | grepsię 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

polecenie ps w oknie terminala

Załóżmy, że nasz użytkownik tego nie zrobił; wiedzą tylko, że nazwa procesu zawiera podciąg „subq”. Używają go pgrepdo sprawdzania, czy wyszukiwane hasło zawiera tylko jedno dopasowanie. Następnie używają tego wyszukiwanego hasła z pkill.

pgrep subq pkill subq

pgrep i pkill w oknie terminala

Możesz użyć pkilldo zabicia kilku procesów na raz. Tutaj użytkownik uruchamia pgrep, aby sprawdzić, ile procesów uruchomił Chrome. Zabijają ich pkillwszystkich. Następnie sprawdzają, pgrepczy wszystkie zostały usunięte.

pgrep chrome pkill chrome pgrep chrome

pgrep i pkill w oknie terminala

Jeśli uruchomionych jest kilka procesów o tej samej nazwie, ale nie chcesz ich wszystkich zabić, możesz użyć pgrepopcji -f(wiersza poleceń), aby określić, który proces jest który. Prostym przykładem mogą być dwa pingprocesy. 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"

pgrep pkill z wierszem poleceń ping

Komenda zabicia

Ostrzeżenie : w systemach operacyjnych Solaris i OpenIndiana killallpolecenie zabije wszystkie procesy, które należą do Ciebie. Jeśli jesteś rootem lub jeśli go wydałeś, sudo killallzrestartujesz 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

polecenie killall w oknie terminala

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ć anadział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

killall z opcją młodszą niż

Opcja -o(starsze niż) pozwala zabić procesy, które działają dłużej niż określony okres. To polecenie zabije wszystkie sshpołączenia, które działały dłużej niż jeden dzień:

killall -o 1d sshd

polecenie killall w oknie terminala

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

Twój adres e-mail nie zostanie opublikowany. Wymagane pola są oznaczone *