Uzyskaj przegląd procesów działających na komputerze z systemem Linux, korzystając z polecenia ps. Możesz lokalizować procesy według ich nazwy, użytkownika lub terminala, dostosowując szczegóły według własnych potrzeb. Pokażemy Ci, jak to zrobić.
Zarządzanie procesami w systemie Linux
Jądro stanowi podstawowy element wszystkich systemów operacyjnych opartych na Linuxie i Uniksie. Jego główne zadania obejmują alokację zasobów systemowych, takich jak pamięć RAM oraz czas procesora. W ramach tych zadań jądro musi skutecznie zarządzać tymi zasobami w czasie rzeczywistym, aby wszystkie uruchomione procesy mogły sprawiedliwie korzystać z dostępnych zasobów, w zależności od priorytetu każdego z nich.
Czasami zadania mogą ulegać zablokowaniu, zapętlać się lub przestawać odpowiadać z różnych przyczyn. Mogą również działać, ale wykorzystywać zbyt dużo czasu procesora lub pamięci RAM, co może być problematyczne. W takich sytuacjach konieczne może być zakończenie niektórych z tych procesów. Kluczowym krokiem w tym procesie jest zidentyfikowanie konkretnego procesu.
Ps jest niezwykle elastycznym narzędziem, które dostarcza dokładnie tych informacji, których potrzebujesz, w formacie, który preferujesz. W rzeczywistości ps ma wiele opcji. W tym artykule omówimy najpopularniejsze z nich, ale jeśli zechcesz zgłębić temat dalej, nasz przewodnik ułatwi Ci przyswojenie zawartości strony podręcznika.
Podstawowe użycie polecenia ps
Najprostszy sposób użycia ps to uruchomienie go bez żadnych parametrów:
ps
Wynik polecenia ps pokazuje listę procesów uruchomionych przez użytkownika, który je wywołał.
Wynik zawiera cztery kolumny:
- PID: identyfikator procesu.
- TTY: nazwa terminala, w którym jest zalogowany użytkownik.
- TIME: czas procesora, który dany proces wykorzystał.
- CMD: nazwa polecenia, które uruchomiło proces.
Wyświetlanie procesów wszystkich użytkowników
Dodając parametr -e (wszystkie procesy), możemy uzyskać listę wszystkich procesów uruchomionych przez wszystkich użytkowników, a nie tylko przez aktualnego użytkownika wykonującego polecenie ps. Z uwagi na to, że lista może być długa, możemy użyć narzędzia less, aby ułatwić przeglądanie.
ps -e | less
Wynik jest przesyłany do polecenia less, co pozwala na łatwiejsze przeglądanie długiej listy procesów.
Lista procesów zawiera znacznie więcej pozycji, ale podobnie jak wcześniej, prezentowane są te same cztery kolumny. W przypadku wpisów, które mają znak zapytania (?) w kolumnie TTY, oznacza to, że nie zostały uruchomione z terminala.
Pokazywanie hierarchii procesów
Czasami pomocne może być zrozumienie, które procesy uruchomiły inne procesy, aby zidentyfikować źródło problemu. W tym celu używamy opcji -H (hierarchia).
ps -eH | less
Wcięcia w wynikach wskazują, które procesy są rodzicami innych procesów.
Aby lepiej zobrazować hierarchię procesów, możemy poprosić ps o narysowanie struktury w postaci drzewa, korzystając z opcji –forest.
ps -eH --forest | less
To znacznie ułatwia śledzenie, które procesy są nadrzędne w stosunku do innych.
Filtracja procesów według nazwy
Możesz przekierować wynik z ps do grep, aby wyświetlić tylko te wpisy, które pasują do podanego hasła. Przykładowo, aby znaleźć procesy związane z „firefox”, użyj:
ps -e | grep firefox
W tym przypadku otrzymujemy pojedynczy wpis dotyczący interesującego nas procesu. Gdybyśmy jednak uruchomili kilka instancji Firefoksa, wynik byłby dłuższy.
Dodawanie dodatkowych kolumn do wyników
Aby rozszerzyć informacje wyświetlane w wynikach, użyj opcji -f (pełny format).
ps -ef | less
Wynik zawiera dodatkowy zestaw kolumn.
Kolumny te to:
- UID: identyfikator użytkownika będącego właścicielem procesu.
- PID: identyfikator procesu.
- PPID: identyfikator procesu nadrzędnego.
- C: liczba procesów potomnych.
- ETIME: czas rozpoczęcia procesu.
- TTY: nazwa terminala, w którym użytkownik jest zalogowany.
- TIME: czas procesora wykorzystany przez proces.
- CMD: nazwa polecenia uruchamiającego proces.
Wykorzystując opcję -F (extra full-format), można uzyskać jeszcze więcej kolumn:
ps -eF | less
Otrzymane kolumny mogą wymagać przewijania w poziomie, aby zobaczyć wszystkie dane.
Naciśnięcie klawisza „Strzałka w prawo” przesuwa wyświetlacz w lewo.
Otrzymane kolumny to:
- UID: identyfikator użytkownika właściciela procesu.
- PID: identyfikator procesu.
- PPID: identyfikator procesu nadrzędnego.
- C: liczba procesów potomnych.
- SZ: rozmiar obrazu procesu w stronach RAM.
- RSS: rozmiar zestawu rezydenta, czyli niezamieniana pamięć fizyczna używana przez proces.
- PSR: procesor, do którego przypisany jest proces.
- ETIME: czas rozpoczęcia procesu.
- TTY: nazwa terminala, w którym użytkownik jest zalogowany.
- TIME: czas procesora wykorzystany przez proces.
- CMD: nazwa polecenia uruchamiającego proces.
Wyświetlanie szczegółów procesu według identyfikatora
Po zidentyfikowaniu interesującego cię identyfikatora procesu, możesz użyć tego identyfikatora w poleceniu ps, aby uzyskać szczegóły dotyczące tego procesu. Aby to zrobić, skorzystaj z opcji -p (wybierz według identyfikatora procesu):
ps -p 3403
Wynik zawiera szczegóły dotyczące wybranego procesu:
Nie jesteś ograniczony do jednego identyfikatora procesu; możesz podać listę identyfikatorów oddzielonych spacjami.
Wyświetlanie procesów według nazwy polecenia
Opcja -C (polecenie) pozwala na wyszukiwanie procesów przy użyciu ich nazw. Oznacza to, że możesz odnaleźć procesy za pomocą nazwy polecenia, które je uruchomiło. Różni się to od pełnej ścieżki lub parametrów, które mogą być częścią wiersza poleceń.
ps -C shutter
Wyświetlane są szczegóły dotyczące procesu migawki.
Wyświetlanie procesów dla konkretnego użytkownika
Aby zobaczyć procesy należące do określonego użytkownika, użyj opcji -u (lista użytkowników):
ps -u mary
Wynik przedstawia procesy przypisane do konta użytkownika mary.
Wyświetlanie procesów według terminala
Aby uzyskać listę procesów związanych z konkretnym terminalem, użyj opcji -t (wybierz przez TTY). Używając tej opcji bez numeru TTY, uzyskasz informacje o procesach powiązanych z aktualnym terminalem.
tty
ps -t
Polecenie tty pokazuje, że jesteś zalogowany na pseudoterminalu pts/0. Wszystkie procesy wymienione przez ps -t są związane z TTY pts/0.
Jeśli podasz numer TTY w poleceniu, otrzymasz raport dotyczący procesów związanych z tym terminalem.
ps -t 1
Tym razem wszystkie procesy są związane z TTY pts/1.
Wybieranie kolumn do wyświetlenia
Opcja -o (format) pozwala na wybór kolumn, które chcesz uwzględnić w wynikach z ps. Możesz zdefiniować kolumny według ich nazw. Pełną listę nazw kolumn znajdziesz na stronie podręcznika w sekcji dotyczącej „Specyfikatorów formatu standardowego”. W tym przykładzie wybieramy czas procesora (pcpu) oraz argumenty polecenia:
ps -e -o pcpu,args | less
Wynik zawiera tylko wybrane przez nas dwie kolumny.
Sortowanie wyników według kolumn
Możesz posortować wyniki za pomocą opcji –sort. Na przykład, aby posortować według kolumny procesora:
ps -e -o pcpu,args --sort -pcpu | less
Myślnik „-” w parametrach sortowania oznacza, że wyniki będą uporządkowane malejąco.
Aby zobaczyć dziesięć najbardziej obciążających procesor procesów, możesz skorzystać z polecenia head:
ps -e -o pcpu,args --sort -pcpu | head -10
Otrzymasz posortowaną i skróconą listę.
Jeśli dodasz kolejne kolumny do wyników, możesz posortować według większej liczby kryteriów. Na przykład, dodajmy kolumnę pmem, która przedstawia procent pamięci wykorzystywanej przez proces. Bez myślnika lub z plusem „+” wyniki będą posortowane rosnąco.
ps -e -o pcpu,pmem,args --sort -pcpu,pmem | head -10
Otrzymasz dodatkową kolumnę, a nowa kolumna będzie brana pod uwagę w sortowaniu. Pierwsza kolumna będzie sortowana przed drugą, a druga w porządku rosnącym, ponieważ nie umieściliśmy myślnika przy pmem.
Dodajmy teraz kolumnę z identyfikatorem procesu (pid), abyśmy mogli zidentyfikować każdy proces na liście.
ps -e -o pid,pcpu,pmem,args --sort -pcpu,pmem | head -10
Teraz możemy łatwo zidentyfikować procesy.
Zabijanie procesów według identyfikatora
Omówiliśmy różne metody identyfikacji procesów, w tym na podstawie ich nazw, poleceń, użytkowników oraz innych atrybutów, takich jak wykorzystanie CPU i pamięci.
Znając identyfikator procesu, łatwo możemy go zakończyć, używając polecenia kill. Na przykład, aby zabić proces o id 898, użyjemy:
sudo kill 898
Jeśli polecenie zakończy się sukcesem, proces zostanie usunięty bez żadnych komunikatów.
Zabijanie procesów na podstawie nazwy
Możesz użyć polecenia pkill, aby zabić procesy na podstawie ich nazwy. Upewnij się, że identyfikujesz odpowiedni proces! To polecenie zakończy główny proces.
sudo pkill top
Brak komunikatów oznacza, że proces został zakończony bez problemów.
Zabijanie wielu procesów na podstawie nazwy
Jeśli masz kilka uruchomionych instancji tego samego procesu lub jeśli proces spowodował uruchomienie kilku procesów potomnych (jak to często ma miejsce w przypadku Google Chrome), możesz je zabić za pomocą polecenia killall.
Na przykład, jeśli mamy kilka instancji polecenia top:
ps -e | grep top
Możemy zakończyć wszystkie instancje tym poleceniem:
sudo killall top
Brak komunikacji oznacza, że oba procesy zostały pomyślnie zakończone.
Uzyskiwanie dynamicznego widoku procesów z narzędziem top
Wynik zwracany przez ps to jedynie migawka. Aby uzyskać dynamiczny podgląd procesów, uruchom polecenie top. Oferuje ono dynamiczny widok aktualnie działających procesów. Interfejs składa się z dwóch części: górnej, zawierającej informacje tekstowe, oraz dolnej, gdzie wyświetlana jest tabela z kolumnami.
Uruchom polecenie top w terminalu:
top
Kolumny w narzędziu top przedstawiają następujące informacje o procesach:
- PID: identyfikator procesu.
- UŻYTKOWNIK: nazwa właściciela procesu.
- PR: priorytet procesu.
- NI: wartość nice 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ę możliwych wartości).
- % CPU: procent czasu procesora zużywanego przez proces od ostatniej aktualizacji.
- % MEM: procent wykorzystywanej pamięci fizycznej.
- TIME +: całkowity czas procesora zużywany przez proces w setnych częściach sekundy.
- COMMAND: nazwa polecenia lub linia poleceń (nazwa oraz parametry).
Stan procesu może przyjmować jedną z następujących wartości:
- D: Nieprzerwany sen.
- R: Bieganie.
- S: Spanie.
- T: Zatrzymany (śledzony).
- Z: Zombie.
Aby zakończyć działanie narzędzia top, naciśnij klawisz „Q”.
Zanim zabijesz proces
Upewnij się, że identyfikujesz właściwy proces i że jego zakończenie nie spowoduje żadnych problemów. Warto również sprawdzić opcje -H (hierarchia) oraz –forest, aby upewnić się, że nie pomijasz żadnych ważnych procesów potomnych.
newsblog.pl
Maciej – redaktor, pasjonat technologii i samozwańczy pogromca błędów w systemie Windows. Zna Linuxa lepiej niż własną lodówkę, a kawa to jego główne źródło zasilania. Pisze, testuje, naprawia – i czasem nawet wyłącza i włącza ponownie. W wolnych chwilach udaje, że odpoczywa, ale i tak kończy z laptopem na kolanach.