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
Opcja | Opis |
-u | lista identyfikatorów procesów należących do określonego użytkownika |
-C | policz liczbę dopasowanych procesów |
-I | wyświetlaj tylko nazwy procesów |
-a | wyś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.
Opcje | Opis |
-F | dopasuj do pełnych argumentów, w tym spacji, cudzysłowów, znaków specjalnych |
-u | aby poinformować proces pkill, aby pasował do procesu uruchomionego przez określonego użytkownika |
-1 | ponownie ładuje proces |
-9 | zabija proces |
-15 | wdzię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.