Jak zabić proces według nazwy w systemie Linux?

Wymuś zakończenie źle działających procesów za pomocą tych poleceń systemu Linux

Aby wyjaśnić znaczenie „procesu” w najprostszych słowach, jest to uruchomiona instancja dowolnej aplikacji lub programu w twoim systemie. Możesz korzystać z wielu aplikacji jednocześnie, takich jak przeglądanie, słuchanie muzyki działającej na twoim terminalu itp. Istnieje wiele procesów w tle powiązanych z tymi aplikacjami, które są uruchamiane przez użytkownika.

Każda aplikacja lub program działający w Twoim systemie tworzy wiele procesów powiązanych z Twoją pojedynczą aplikacją. Czasami może to stanowić problem, a pozbycie się tych procesów jest jedyną opcją, jaką masz.

„Zabicie” procesu jest jedną z przydatnych opcji, które Linux zapewnia zatrzymanie trwających procesów, czy to procesu na pierwszym planie, czy procesu w tle. W tym artykule omówimy polecenia takie jak zabić, zabić oraz zabić wszystkich aby wymusić zamknięcie dowolnego procesu w systemie.

Po co zabijać proces?

Zrozumienie koncepcji zabijania procesu jest ważne przed przejściem do dalszej części tego samouczka. Zabijanie może wydawać się bardzo brutalnym sposobem wyrażania tej koncepcji, ale w przenośni oznacza to siłowe przerwanie procesu.

Po co więc przerywać lub kończyć trwający proces? Gdy w tle działa wiele procesów, wszystkie lub kilka z nich może działać nieprawidłowo i powodować nieprawidłowe działanie systemu. Opóźnia to bieżące zadania, ponieważ nieprawidłowo działający proces może na chwilę zamrozić system.

Czasami zamknięcie wszystkich źle działających procesów wydaje się być jedyną opcją przywrócenia normalności systemu. Linux pozwala zabić proces za pomocą pid lub nazwę procesu.

Używając pgrep Komenda

Większość użytkowników Linuksa zna grep Komenda. ten pgrep polecenie może być użyte w podobnych liniach grep.

pgrep polecenie, gdy jest używane, wyświetla pid uruchomionego procesu, jak określono w poleceniu. To polecenie będzie bardzo pomocne podczas korzystania z zabić Komenda.

Ogólna składnia:

pgrep [opcje] [wzór]

Ważne opcje dostępne z pgrep Komenda

OpcjaOpis
-ulista identyfikatorów procesów należących do określonego użytkownika
-Cpolicz liczbę dopasowanych procesów
-Iwyświetlaj tylko nazwy procesów
-awyświetl pełną ścieżkę nazwy procesu

Zademonstrujmy użycie pgrep polecenie na przykładzie.

pgrep -u gaurav gnome

Tutaj chcemy zobaczyć pidowie gnoma procesowego, którego właścicielem jest użytkownik „gaurav”. Opcja -u pozwala na wymienienie pidowie procesów należących do określonego użytkownika. W tym przypadku użytkownik gaurav.

Wyjście:

gaurav@ubuntu:~$ pgrep -u gaurav gnome 1752 1755 1909 1922 2021 2576 4279 gaurav@ubuntu:~$

W miarę postępów w tym samouczku, pgrep Polecenie pomoże nam w potwierdzeniu, czy proces został zabity, czy nadal działa.

Przejdźmy teraz do zabić polecenie i jego wykonanie.

Za pomocą zabić Komenda

Możesz użyć zabić polecenie w systemie Linux, aby zabić proces przy użyciu nazwy procesu. Nawet jeśli nie znasz pid jakiegoś procesu, nawet wtedy możesz zabić ten konkretny proces za pomocą zabić Komenda.

Procesy można określić za pomocą ich pełnej nazwy lub częściowej nazwy, używając zabić Komenda. Nawet jeśli wprowadzisz częściową nazwę procesu, zabić polecenie dopasuje wszystkie uruchomione procesy z pasującą nazwą, którą wpisałeś w poleceniu.

Składnia:

pkill [opcje][wzór_nazwy_procesu] 

Przykład:

Pozwól nam wyświetlić aktualnie uruchomione procesy za pomocą szczyt Komenda. Możesz także użyć ps polecenie, aby wyświetlić listę procesów.

szczyt
top - 14:24:02 w górę 3:12, 1 użytkownik, średnie obciążenie: 0,29, 0,48, 0,58 Zadania: łącznie 221, 1 uruchomiony, 172 uśpiony, 0 zatrzymany, 1 zombie %Cpu: 5,6 us, 1,0 sy , 0.0 ni, 92,9 id, 0.4 wa, 0.0 hi, 0.1 si, 0.0 st KiB Mem : łącznie 3928240, 610456 wolne, 2233152 używane, 1084632 buff/cache KiB Swap: łącznie 4083708, 3378884 wolne, 704824 używane. 1187268 dostępne Mem PID USER PR NI VIRT RES SHR S %CPU %MEM TIME+ COMMAND 4077 gaurav 20 0 3312128 673480 118360 S 19.6 17,1 15:13.23 Zawartość sieciowa 3712 gaurav 20 0 3953008 453544 116476 S 4.0 11.5 9:28.39 MainThread 2010 gaurav 20 0 4084232 111096 45024 S 1.7 2.8 3:14.85 gnome-shell 1197 root 20 0 1039612 33704 22988 S 1.0 0.9 3:04.42 Xorg 1426 couchdb 20 0 3772396 16908 2520 S 0.7 0.4 1:50.83 beam.smp 3288 gaurav 20 0 722480 25048 18272 S 0,7 0,6 0:06,84 gnome-terminal- 3915 gaurav 20 0 2804900 231524 111228 S 0,7 5,9 0:54,42 Zawartość sieci 4146 gaurav 20 0 3017924 245304 120604 S 0,7 6,2 2:01,21 Zawartość sieci 4417 gaurav 20 0 2964208 234396 119160 S 0,7 6,0 :59.90 Treść internetowa 4860 gaurav 20 0 3066800 372920 132544 S 0.7 9.5 0:48.20 Treść internetowa 16007 gaurav 20 0 41944 3780 3116 R 0.7 0.1 0:00.28 góra 

Za pomocą szczyt polecenie wyświetli wiele procesów na twoim terminalu. Spróbujmy wyświetlić proces o określonej nazwie. Użyjemy grep polecenie, aby wyświetlić proces, którego nazwa pasuje do ciągu „mongo”.

góra | grep-i mongo

Notatka: Tutaj użyłem opcji -i, aby nie uwzględniać wielkości liter w wyszukiwaniu.

Wyjście tego polecenia wyświetli procesy pasujące do nazwy „mongo”

 1158 mongodb 20 0 288564 4848 1320 S 0,7 0,1 1:03,22 mongod 1158 mongodb 20 0 288564 4848 1320 S 1,0 0,1 1:03,25 mongod 1158 mongodb 20 0 288564 4848 1320 S 0,7 0,1 1:03,27 mongod 1158 mongodb 20 0 288564 4848 1320 S 0,7 0,1 1:03,29 mongod 1158 mongodb 20 0 288564 4848 1320 S 0,7 0,1 1:03,31 mongod 1158 mongodb 20 0 288564 4848 1320 S 0,7 0,1 1:03,33 mongod 1158 mongodb 20 0 288564 4848 1320 S 1,0 0,1 1:03,36 mongod 1158 mongodb 20 0 288564 4848 1320 S 0,7 0,1 1:03,38 Mongod 1158 Mongodb 20 0 288564 4848 1320 S 0,7 0,1 1:03,40 Mongod 1158 Mongodb 20 0 288564 4848 1320 S 1,0 0,1 1:03,43 Mongod 1158 Mongodb 20 0 288564 4848 1320 S 0,7 0,1 1:03,45 mongod 1158 mongodb 20 0 288564 4848 1320 S 1.0 0,1 1:03,48 mongod 1158 mongodb 20 0 288564 4848 1320 S 0,3 0,1 1:03,49 mongod 1158 mongodb 20 0 288564 4848 1320 S 1.0 0,1 1:03,52 mongod 1158 mongodb 20 0 288564 4848 1320 S 0,7 0,1 1:03,54 mongod 1158 mongodb 20 0 288564 4848 1320 S 1,0 0,1 1:03,57 mongod

Teraz użyjemy zabić polecenie, aby zabić proces o nazwie „mongo”.

pkill mongo

To polecenie zabije teraz proces mongo. Możemy potwierdzić, czy proces został zmuszony do zakończenia, używając pgrep polecenie, które wyświetla pid uruchomionego procesu zgodnie z kryteriami określonymi przez użytkownika.

gaurav@ubuntu:~$ pgrep mongo gaurav@ubuntu:~$

To polecenie nie zwróci żadnej wartości. Potwierdza to, że proces „mongo” jest teraz zabijany za pomocą zabić Komenda.

Opcje często używane z zabić Komenda

Podczas korzystania z zabić polecenie będziemy potrzebować wymienionych opcji do prawidłowego i bezproblemowego korzystania z zabić Komenda.

OpcjeOpis
-Fdopasuj do pełnych argumentów, w tym spacji, cudzysłowów, znaków specjalnych
-uaby poinformować proces pkill, aby pasował do procesu uruchomionego przez określonego użytkownika
-1ponownie ładuje proces
-9zabija proces
-15wdzięcznie przerywa proces

Zobaczmy jeszcze jeden przykład zabić polecenie za pomocą -F opcja.

Na terminalu są obecnie wykonywane dwa polecenia, jak pokazano poniżej.

pinguj bbc.com pinguj youtube.com

Oba procesy są inicjowane przez świst Komenda. Załóżmy teraz, że chcemy zakończyć tylko jeden proces „ping youtube.com”, a następnie musimy użyć -F opcja z zabić polecenie, które zabija proces o określonej nazwie zawierającej spacje i cudzysłowy z nazwy procesu.

Komenda:

gaurav@ubuntu:~$ pkill -f "ping youtube.com" gaurav@ubuntu:~$ 

Wynik:

gaurav@ubuntu:~$ ping youtube.com PING youtube.com (142.250.67.206) 56(84) bajtów danych. 64 bajty z bom12s08-in-f14.1e100.net (142.250.67.206): icmp_seq=1 ttl=117 time=30.9 ms 64 bajty z bom12s08-in-f14.1e100.net (142.250.67.206): icmp_seq=2 ttl =117 time=121 ms 64 bajty z bom12s08-in-f14.1e100.net (142.250.67.206): icmp_seq=206 ttl=117 time=86.5 ms 64 bajty z bom12s08-in-f14.1e100.net (142.250.67.206 ): icmp_seq=207 ttl=117 time=105 ms Zakończony gaurav@ubuntu:~$ 

Tutaj "pinguj youtube.com” proces jest teraz zabity, a „pinguj bbc.com” nadal działa na terminalu.

W przypadku, gdybyśmy użyli Pkill ping polecenie, zabiłoby to zarówno świst procesy, co jest niepożądane.

Sygnały używane z zabić Komenda

zabić wymusza zakończenie procesu, wysyłając do niego określony sygnał. Istnieją trzy możliwe sygnały, które: zabić polecenie może wysłać do procesu w zależności od polecenia podanego przez użytkownika.

Poniżej znajduje się lista dostępnych sygnałów.

SygnałSpecyfikacja
1(HUP)ponownie ładuje określony proces
9 (ZABIĆ)zabija określony proces
15 (TERMIN)delikatnie zatrzymuje lub przerywa określony proces

W tym samouczku będziemy w dużej mierze polegać na ZABIĆ sygnał. Przeanalizujmy kilka przykładów, aby lepiej to zrozumieć.

Używając pgrep polecenie, aby uzyskać pid dopasowanie do nazwy Apache.

gaurav@ubuntu:~$ pgrep apache 1218 10402 10403 gaurav@ubuntu:~$
pkill - Zabij Apache

LUB możesz też użyć komendy z liczbami (np. 1, 9, 15)

pkill -9 Apache

Oba polecenia pokazane powyżej zabiją proces apache. Potwierdzenie za pomocą pgrep polecenie ponownie.

gaurav@ubuntu:~$ pgrep apache gaurav@ubuntu:~$

Jako pgrep polecenie nie zwraca żadnych danych wyjściowych, dowodzi, że proces apache został zabity.

Wniosek

W tym samouczku dowiedzieliśmy się o zabić polecenie i jak jest używane do zabijania procesu bezpośrednio przy użyciu nazwy procesu. Dowiedzieliśmy się również o pgrep polecenie, które służy do pobrania identyfikatora procesu uruchomionego przez dowolnego konkretnego użytkownika. ten pgrep Polecenie pozwala nam na krzyżowe sprawdzenie, czy proces został zabity.