Uzyskaj migawkę procesów uruchomionych na komputerze z systemem Linux za pomocą polecenia ps. Lokalizuj procesy według nazwy, użytkownika, a nawet terminala, podając tak dużo lub tak mało szczegółów, jak potrzebujesz. Pokażemy Ci, jak to zrobić.
Spis treści:
Zarządzanie procesami w systemie Linux
Sercem wszystkich systemów operacyjnych Linux i Unix-podobnych jest jądro. Do jego wielu obowiązków należy przydzielanie zasobów systemowych, takich jak pamięć RAM i czas procesora. Muszą one być żonglowane w czasie rzeczywistym, aby wszystkie uruchomione procesy miały sprawiedliwy udział, zgodnie z priorytetem każdego zadania.
Czasami zadania mogą się blokować, zapętlać się lub przestać odpowiadać z innych powodów. Lub mogą nadal działać, ale pochłaniają zbyt dużo czasu procesora lub pamięci RAM lub zachowują się w równie antyspołeczny sposób. Czasami zadania muszą zostać zabite jako litość dla wszystkich zaangażowanych. Pierwszy krok. Oczywiście ma na celu zidentyfikowanie danego procesu.
Ale może nie masz żadnych problemów z zadaniami lub wydajnością. Być może jesteś po prostu ciekawy, które procesy działają w twoim komputerze i chciałbyś zajrzeć pod maskę. Polecenie ps spełnia obie te potrzeby. To daje Ci migawka tego, co dzieje się wewnątrz komputera „teraz.”
ps jest na tyle elastyczny, że dostarcza dokładnie potrzebnych informacji w dokładnie takim formacie, jaki chcesz. W rzeczywistości ps ma wiele opcji. Opisane tutaj opcje zaspokoją większość typowych potrzeb. Jeśli potrzebujesz zagłębić się w ps niż to, które omówiliśmy w tym artykule, przekonasz się, że nasze wprowadzenie sprawia, że strona podręcznika jest łatwiejsza do przyswojenia.
Procesy aukcyjne
Najłatwiejszym sposobem użycia ps jest uruchomienie go bez parametrów:
ps
ps wyświetla listę procesów uruchomionych przez użytkownika, który uruchomił polecenie.
Cztery kolumny to:
PID: numer identyfikacyjny procesu.
TTY: nazwa konsoli, w której użytkownik jest zalogowany.
CZAS: Ilość czasu przetwarzania procesora, który proces wykorzystał.
CMD: nazwa polecenia, które uruchomiło proces
Proces wystawiania listy dla wszystkich użytkowników
dodając -e (wybierz wszystkie procesy) możemy utworzyć listę ps procesów, które zostały uruchomione przez wszystkich użytkowników, a nie tylko użytkownika, który wykonuje polecenie ps. Ponieważ to będzie długa lista, przekuwamy ją w mniej.
ps -e | less
Lista procesów jest przesyłana potokiem do less.
Na liście mamy o wiele więcej wpisów, ale widzimy te same cztery kolumny, co poprzednio. Wpisy ze znakiem zapytania? w kolumnie TTY nie zostały uruchomione z okna terminala.
Pokazywanie hierarchii procesów
Czasami może pomóc w rozwiązaniu problemu lub zidentyfikowaniu określonego procesu, jeśli można zobaczyć, które procesy uruchomiły inne procesy. W tym celu używamy opcji -H (hierarchia).
ps -eH | less
Wcięcie wskazuje, które procesy są rodzicami jakich innych procesów.
Aby dodać trochę więcej jasności, możemy poprosić ps o dodanie niektórych ASCII linie i narysować hierarchię w postaci drzewa. Można to zrobić za pomocą opcji –forest.
ps -eH --forest | less
Ułatwia to śledzenie, które procesy są rodzicami innych procesów.
Lista procesów według nazwy
Możesz potokować wyjście z ps do grep, aby wyświetlić wpisy które mają nazwy pasujące do wyszukiwanego hasła. Tutaj szukamy wpisów, które pasują do wyszukiwanego hasła „firefox”:
ps -e | grep firefox
W tym przypadku wynik jest pojedynczym wpisem dla procesu, który nas interesuje. Oczywiście, gdybyśmy uruchomili kilka instancji Firefoksa, na liście zwróconych byłoby więcej niż jedna pozycja.
Wyświetlanie większej liczby kolumn w wyniku
Aby dodać więcej kolumn do wyniku, użyj opcji -f (pełny format).
ps -ef | less
Dodatkowy zestaw kolumn jest zawarty w wyjściu ps.
Kolumny to:
UID: identyfikator użytkownika będący właścicielem tego procesu.
PID: identyfikator procesu procesu.
PPID: identyfikator procesu nadrzędnego procesu.
C: Liczba dzieci, które ma proces.
CZAS: Czas rozpoczęcia. Czas rozpoczęcia procesu.
TTY: nazwa konsoli, w której użytkownik jest zalogowany.
CZAS: Ilość czasu przetwarzania procesora, który proces wykorzystał.
CMD: nazwa polecenia, które uruchomiło proces.
Używając opcji -F (extra full-format) możemy uzyskać jeszcze więcej kolumn:
ps -eF | less
Kolumny, które otrzymujemy tym razem, wymagają przewijania ekranu w bok, aby je wszystkie ujawnić.
Naciśnięcie klawisza „Strzałka w prawo” przesuwa wyświetlacz w lewo.
Otrzymane teraz kolumny to:
UID: identyfikator użytkownika będący właścicielem tego procesu.
PID: identyfikator procesu procesu.
PPID: identyfikator procesu nadrzędnego procesu.
C: Liczba dzieci, które ma proces.
SZ: Rozmiar w stronach RAM obrazu procesu.
RSS: Rozmiar zestawu rezydenta. Jest to niewymieniona pamięć fizyczna używana przez proces.
PSR: procesor, do którego jest przypisany proces.
CZAS: Czas rozpoczęcia. Czas rozpoczęcia procesu.
TTY: nazwa konsoli, w której użytkownik jest zalogowany.
CZAS: Ilość czasu przetwarzania procesora, który proces wykorzystał.
CMD: nazwa polecenia, które uruchomiło proces.
Lista procesów według identyfikatora procesu
Po znalezieniu identyfikatora procesu, który Cię interesuje, możesz użyć go z poleceniem ps, aby wyświetlić szczegóły tego procesu. Aby to osiągnąć, użyj opcji -p (wybierz według identyfikatora procesu):
ps -p 3403
Szczegóły tego procesu są wymienione:
Nie jesteś ograniczony do jednego identyfikatora procesu. Możesz podać listę identyfikatorów procesów oddzielonych spacjami.
Lista procesów według poleceń
Opcja -C (polecenie) umożliwia wyszukanie procesu przy użyciu nazwy polecenia. To znaczy nazwa polecenia, które uruchomiło proces. Różni się to nieco od wiersza poleceń, który może zawierać nazwy ścieżek i parametry lub opcje.
ps -C shutter
Wyświetlane są szczegóły dotyczące procesu migawki.
Proces wystawiania aukcji należący do użytkownika
Aby zobaczyć procesy, których właścicielem jest określony użytkownik, użyj opcji -u (lista użytkowników):
ps -u mary
Wyświetlane są procesy należące do konta użytkownika mary.
Lista procesów według terminala
Aby zobaczyć procesy związane z TTY, użyj opcji -t (wybierz przez TTY). Używana bez numeru TTY, opcja -t informuje o procesach powiązanych z bieżącym oknem terminala.
tty
ps -t
Polecenie tty zgłasza, że jest to pseudotype 0. Wszystkie procesy wymienione przez ps -t są powiązane z TTY pts / 0.
Jeśli przekażemy numer TTY w wierszu poleceń, powinniśmy otrzymać raport o procesach powiązanych z tym TTY.
ps -t 1
Tym razem wszystkie procesy są powiązane z TTY pts / 1.
Wybieranie kolumn do wyświetlenia
Za pomocą opcji -o (format) możesz wybrać kolumny, które chcesz uwzględnić w wyniku z ps. Możesz określić kolumny według nazwy. (Długą) listę nazw kolumn można zobaczyć na strona podręcznika w sekcji zatytułowanej „Specyfikatory formatu standardowego”. W tym przykładzie wybieramy czas procesora (pcpu) i wiersz poleceń z argumentami (argumentami) zawartymi w danych wyjściowych.
ps -e -o pcpu,args | less
Dane wyjściowe zawierają tylko nasze dwie żądane kolumny.
Sortowanie wyników według kolumn
Możesz posortować dane wyjściowe za pomocą opcji –sort. Posortujmy wynik według kolumny procesora:
ps -e -o pcpu,args --sort -pcpu| less
Myślnik „-” w parametrze sortowania pcpu podaje malejącą kolejność sortowania.
Aby zobaczyć dziesięć najbardziej obciążających procesor procesów, przeprowadź wyjście przez głowicę Komenda:
ps -e -o pcpu,args --sort -pcpu | head -10
Otrzymujemy posortowaną, skróconą listę.
Jeśli dodamy więcej kolumn do naszego wyświetlacza, możemy posortować według większej liczby kolumn. Dodajmy kolumnę pmem. To jest procent pamięci komputera używanej przez proces. Bez łącznika lub z plusem „+” porządek sortowania jest rosnący.
ps -e -o pcpu,pmem,args --sort -pcpu,pmem | head -10
Otrzymujemy naszą dodatkową kolumnę, a nowa kolumna jest uwzględniana w sortowaniu. Pierwsza kolumna jest sortowana przed drugą, a druga kolumna jest sortowana w porządku rosnącym, ponieważ nie umieściliśmy łącznika na pmem.
Zróbmy to trochę bardziej użytecznym i dodajmy w kolumnie ID procesu (pid), abyśmy mogli zobaczyć numer procesu każdego procesu na naszej liście.
ps -e -o pid,pcpu,pmem,args --sort -pcpu,pmem | head -10
Teraz możemy zidentyfikować procesy.
Zabijanie procesów według identyfikatora procesu
Omówiliśmy szereg sposobów identyfikowania procesów, w tym nazwę, polecenie, użytkownika i terminal. Omówiliśmy również sposoby identyfikowania procesów na podstawie ich atrybutów dynamicznych, takich jak użycie procesora i pamięć.
W ten czy inny sposób możemy zidentyfikować uruchomione procesy. Znając ich identyfikator procesu, możemy (jeśli musimy) zabić dowolny z tych procesów za pomocą polecenia kill. Gdybyśmy chcieli zabić proces 898, użylibyśmy tego formatu:
sudo kill 898
Jeśli wszystko pójdzie dobrze, proces zostanie cicho zakończony.
Zabijanie procesów według nazwy
Polecenie pkill pozwala zabij procesy według nazwy. Upewnij się, że zidentyfikowałeś prawidłowy proces! To polecenie zakończy główny proces.
sudo pkill top
Ponownie, brak wiadomości to dobra wiadomość. Proces jest cicho zakończony.
Zabijanie wielu procesów według nazwy
Jeśli masz wiele uruchomionych kopii procesu lub proces spowodował powstanie wielu procesów podrzędnych (takich jak Google Chrome), jak możesz je zabić? To równie łatwe. Używamy polecenia killall.
Mamy dwie kopie top Running:
ps -e | grep top
Możemy wypowiedzieć obaj z tym poleceniem:
sudo killall top
Brak odpowiedzi oznacza brak problemów, więc oba te procesy zostały zakończone.
Uzyskaj dynamiczny widok z górą
Wyjście z ps to widok migawki. Nie aktualizuje się. Aby uzyskać aktualizację widoku procesów, użyj górnego polecenia. Zapewnia dynamiczny widok procesów uruchomionych na Twoim komputerze. Wyświetlacz składa się z dwóch części. W górnej części ekranu znajduje się pulpit nawigacyjny składający się z wierszy tekstu oraz tabela w dolnej części ekranu złożona z kolumn.
Zacznij od góry za pomocą tego polecenia:
top
Kolumny zawierają informacje o procesach:
PID: identyfikator procesu
UŻYTKOWNIK: nazwa właściciela procesu
PR: priorytet procesu
NI: Miła wartość procesu
VIRT: pamięć wirtualna używana przez proces
RES: pamięć rezydentna używana przez proces
SHR: pamięć współdzielona używana przez proces
S: Stan procesu. Zobacz poniższą listę wartości, które może przyjmować to pole
% CPU: udział czasu procesora używanego przez proces od ostatniej aktualizacji
% MEM: udział używanej pamięci fizycznej
TIME +: całkowity czas procesora używany przez zadanie w setnych częściach sekundy
COMMAND: nazwa polecenia lub linia poleceń (nazwa i parametry wiersza poleceń) Jeśli nie widać kolumny poleceń, naciśnij klawisz „Strzałka w prawo”.
Status procesu może być jednym z:
D: Nieprzerwany sen
R: Bieganie
S: Spanie
T: Śledzone (zatrzymane)
Z: Zombie
Naciśnij klawisz „Q”, aby wyjść od góry.
Zanim zabijesz proces
Upewnij się, że to ten, którego szukasz, i sprawdź, czy nie spowoduje to żadnych problemów. W szczególności warto sprawdzić opcje -H (hierarchia) i –forest, aby upewnić się, że nie ma żadnych ważnych procesów potomnych, o których zapomniałeś.