ps i top w Linuxie

Słownik kwalifikacji INF.02 - Administracja i eksploatacja systemów komputerowych, urządzeń peryferyjnych i lokalnych sieci komputerowych

ps i top — co to jest?

ps (process status) i top (table of processes) to dwa najczęściej używane polecenia w systemie Linux służące do wyświetlania i monitorowania procesów uruchomionych w systemie. Oba pokazują informacje o programach działających w danej chwili, ale różnią się sposobem prezentacji danych:

Infografika: polecenia ps i top w systemie Linux do monitorowania procesów — statyczny ps aux vs dynamiczny top, zakończanie procesów poleceniem kill z sygnałami SIGTERM i SIGKILL oraz polecenia diagnostyczne sprzętu
  • ps — pokazuje statyczny zrzut (migawkę) listy procesów,
  • top — pokazuje dynamiczny podgląd odświeżany na bieżąco.

To podstawowy temat w kwalifikacji INF.02 (Administracja i eksploatacja systemów komputerowych) — pytania CKE sprawdzają znajomość różnic między tymi poleceniami, ale również zakończanie procesów (kill) oraz odróżnianie poleceń diagnostycznych od poleceń operacji na plikach.

Polecenie ps

Polecenie ps wypisuje listę procesów w tabeli, w stanie z chwili wywołania. Wynik nie odświeża się automatycznie — żeby zobaczyć aktualizację, trzeba uruchomić polecenie ponownie.

Najczęściej używane warianty

ps          # procesy bieżącego użytkownika w bieżącym terminalu
ps aux      # WSZYSTKIE procesy w systemie (styl BSD)
ps -ef      # WSZYSTKIE procesy (styl Unix, z PID rodzica)
ps -u jan   # procesy konkretnego użytkownika
ps -p 1234  # konkretny proces o PID 1234

Kolumny wyniku ps aux

KolumnaZnaczenie
USERużytkownik uruchamiający proces
PIDnumer identyfikacyjny procesu (Process ID)
%CPUaktualne zużycie procesora
%MEMzużycie pamięci RAM
VSZwielkość pamięci wirtualnej
RSSwielkość pamięci fizycznej
STATstan procesu (R, S, Z, D, T)
STARTczas startu procesu
TIMEłączny czas CPU
COMMANDpolecenie, które uruchomiło proces

Typowe użycie z grep

Bardzo często ps łączy się z grep przez potok (pipe), aby znaleźć konkretny proces:

ps aux | grep apache        # wszystkie procesy apache
ps aux | grep firefox       # wszystkie procesy firefox
ps -ef | grep ssh           # procesy ssh w stylu Unix

Wynik to lista wszystkich procesów zawierających w nazwie podany ciąg.

Polecenie top

Polecenie top pokazuje dynamiczny, odświeżany w czasie rzeczywistym widok procesów. Listę procesów aktualizuje się co kilka sekund — dzięki temu można obserwować bieżące obciążenie systemu.

Uruchomienie

top              # uruchomienie z domyślnymi ustawieniami
top -u jan       # procesy użytkownika jan
top -p 1234      # konkretny proces 1234

Co pokazuje top?

W górnej części ekranu:

  • czas pracy systemu (uptime) i obciążenie (load average),
  • liczba aktywnych zadań,
  • użycie procesora (%us, %sy, %id, %wa),
  • użycie pamięci RAM i swap.

W dolnej części:

  • listę procesów sortowaną domyślnie wg zużycia CPU,
  • PID, użytkownika, priorytet (PR), wartość nice (NI),
  • zużycie pamięci wirtualnej i fizycznej,
  • czas CPU i polecenie.

Interaktywne klawisze w top

top działa interaktywnie — można sterować nim z klawiatury:

KlawiszDziałanie
qwyjście z programu
kzakończenie procesu (zapyta o PID i sygnał)
rzmiana priorytetu (renice)
Msortowanie wg zużycia pamięci
Psortowanie wg zużycia CPU
Tsortowanie wg czasu CPU
ufiltruj po użytkowniku
hpomoc
1pokaż obciążenie wszystkich rdzeni CPU

Najważniejsza różnica — pytanie egzaminacyjne

To klasyczne pytanie CKE: jaka jest zasadnicza różnica między ps a top?

ps prezentuje statyczny stan procesów (migawkę z konkretnego momentu),
top prezentuje dynamicznie aktualizowaną listę procesów (odświeżaną w czasie rzeczywistym).

W odpowiedzi egzaminacyjnej zwykle pojawiają się sformułowania w stylu:

  • top aktualizuje na bieżąco, a ps pokazuje wynik tylko raz" ✅
  • ps pokazuje statyczny zrzut, top dynamicznie odświeża" ✅

Zakończanie procesów — polecenie kill

Do zakończenia procesu w Linuksie służy polecenie kill. Wymaga podania numeru PID procesu (znalezionego np. przez ps lub top).

Składnia

kill 1234              # wyśle sygnał SIGTERM (domyślnie 15) — łagodne zakończenie
kill -9 1234           # wyśle sygnał SIGKILL (9) — wymuszone zakończenie
kill -15 1234          # to samo co kill 1234 (SIGTERM)
killall firefox        # zakończy wszystkie procesy o nazwie firefox
pkill firefox          # zakończy procesy pasujące do nazwy

Sygnały — najważniejsze

SygnałNumerZnaczenie
SIGTERM15grzeczne zakończenie — proces może się posprzątać
SIGKILL9bezwzględne zakończenie — proces NIE może go zignorować
SIGHUP1przeładowanie konfiguracji (np. po edycji configa)
SIGINT2przerwanie (jak Ctrl+C w terminalu)
SIGSTOP19zatrzymanie procesu (jak Ctrl+Z)
SIGCONT18wznowienie zatrzymanego procesu

Pytanie CKE: „Które polecenie w systemie Linux służy do zakończenia procesu?" → kill (lub killall, pkill).

Kiedy SIGKILL (kill -9)?

Sygnał SIGKILL używa się, gdy proces nie reaguje na SIGTERM — czyli „zwiesił się" i nie kończy się normalnie. SIGKILL jest niewolicjonalny: jądro systemu zabija proces niezależnie od jego stanu. Wady: proces nie ma szansy zapisać danych ani zamknąć plików.

W praktyce zawsze najpierw próbuj kill PID (SIGTERM), a dopiero gdy nie działa — kill -9 PID (SIGKILL).

Polecenia diagnostyczne sprzętu w Linuksie

Pytanie CKE: „Które polecenie w systemie Linux nie pozwala na diagnozowanie sprzętu komputerowego?" — wymaga znajomości typowych poleceń diagnostycznych.

Polecenia DO diagnostyki sprzętu

PolecenieCo diagnozuje
lspciwszystkie urządzenia na magistrali PCI (karta grafiki, sieciowa, dźwiękowa)
lsusburządzenia podłączone przez USB
lshwszczegółowy wykaz całego sprzętu komputera
dmidecodedane z BIOS/UEFI (płyta, RAM, procesor)
dmesgkomunikaty jądra (m.in. wykrywanie urządzeń, błędy sprzętu)
hdparmparametry dysków twardych
smartctldane S.M.A.R.T. dysków HDD/SSD
freeużycie pamięci RAM i swap
dfużycie miejsca na dyskach
durozmiar katalogów i plików
top / htopobciążenie CPU i RAM (jako diagnostyka wydajności)
uptimeczas pracy systemu + obciążenie
uname -ainformacje o jądrze i architekturze
cat /proc/cpuinfoszczegóły procesora
cat /proc/meminfoszczegóły pamięci RAM

Polecenia, które NIE diagnozują sprzętu

PolecenieCo robi
lslistuje pliki w katalogu
mkdirtworzy katalog
rmdir / rmusuwa katalog / pliki
cpkopiuje pliki
mvprzenosi/zmienia nazwę pliku
catwyświetla zawartość pliku
grepwyszukuje wzorzec w tekście
chmodzmienia uprawnienia plików (więcej w chmod Linux)
chownzmienia właściciela pliku
pwdwypisuje ścieżkę bieżącego katalogu
echowypisuje tekst na ekran

W pytaniu „które polecenie NIE pozwala diagnozować sprzętu" odpowiedzią jest zwykle jedno z tych operujących na plikach (najczęściej: ls, mkdir, cp, chmod itp.).

htop — ulepszony top

htop to nowoczesna alternatywa dla top:

  • ma kolorowy interfejs z paskami obciążenia CPU,
  • pokazuje drzewo procesów (F5),
  • pozwala wybierać procesy myszką,
  • ma intuicyjne klawisze funkcyjne (F1–F10),
  • ma lepsze sortowanie i filtrowanie.

Nie jest częścią standardowej dystrybucji Linuksa, ale można go zainstalować:

sudo apt install htop      # Debian/Ubuntu
sudo dnf install htop      # Fedora/RHEL

htop w pytaniach egzaminacyjnych pojawia się rzadko, ale to dobry temat do zapamiętania jako rozszerzenie funkcji top.

Stany procesów w Linuksie

W kolumnie STAT (ps) lub S (top) pojawiają się litery oznaczające stan procesu:

SymbolStanZnaczenie
RRunningproces działa lub jest gotowy do uruchomienia
SSleeping (interruptible)proces śpi — czeka na zdarzenie (np. I/O)
DUninterruptible sleepproces czeka na operację I/O (nie można go przerwać)
ZZombieproces zakończony, ale wciąż w tablicy procesów
TStoppedproces zatrzymany (np. przez SIGSTOP)
<High prioritywysoki priorytet
NLow priority (nice)obniżony priorytet
+Foregroundproces w pierwszym planie

Procesy Zombie (Z) to martwe procesy, które „rodzic" jeszcze nie odebrał — nie zużywają zasobów, ale zajmują wpis w tablicy. Często usuwa je zakończenie procesu rodzica.

Praktyczne przykłady — pytania egzaminacyjne

Przykład 1: znaleźć i zabić proces

ps aux | grep firefox       # znajdź PID firefoxa
kill 1234                    # zakończ proces o PID 1234
# jeśli nie zadziała:
kill -9 1234                 # wymuszone zakończenie

Przykład 2: monitorować obciążenie

top                          # uruchom top
# w top: naciśnij P (sortowanie wg CPU)
# w top: naciśnij M (sortowanie wg pamięci)
# w top: q (wyjście)

Przykład 3: sprawdzić sprzęt

lspci                        # urządzenia PCI
lsusb                        # urządzenia USB
free -h                      # pamięć RAM (czytelnie)
df -h                        # miejsce na dyskach (czytelnie)
lshw                         # pełny wykaz sprzętu (jako root)

Powiązane tematy

  • chmod Linux — zmiana uprawnień plików w Linuksie.
  • Powłoka bash — terminal, w którym uruchamia się ps/top.
  • Procesy i wątki — koncepcja procesu w systemie operacyjnym.
  • Systemd — nowoczesny menedżer usług w Linuksie (systemctl status).
  • Crontab — harmonogram zadań (procesy uruchamiane cyklicznie).

Częste pomyłki — nie myl tego!

  • pstopps statyczne (zrzut w danej chwili), top dynamiczne (odświeżane).
  • killkillallkill wymaga PID (numeru), killall przyjmuje nazwę procesu.
  • kill to nie zabijanie — to wysłanie sygnału procesowi (domyślnie SIGTERM = grzeczne).
  • kill -9 to nie liczba 9 procesów — to sygnał numer 9 (SIGKILL) do jednego procesu.
  • top to nie polecenie do top procesów po pamięci — domyślnie sortuje wg CPU (po M sortuje wg RAM).
  • ps auxps -ef — to dwa różne style (BSD vs Unix), ale dają podobne rezultaty.
  • ls nie diagnozuje sprzętuls listuje pliki, do sprzętu służy lspci, lsusb, lshw, dmesg.
  • free nie zwalnia pamięci — to polecenie WYŚWIETLAJĄCE użycie RAM.
  • grep nie kończy procesów — to filtr tekstu; do zabijania służy kill.
  • proces Zombie ≠ działający proces — to martwy proces, którego rodzic jeszcze nie odebrał statusu.

Najważniejsze do zapamiętania

ps wyświetla statyczny zrzut procesów (migawka), top pokazuje je dynamicznie (na bieżąco) — to kluczowa różnica egzaminacyjna. ps aux i ps -ef to dwa najpopularniejsze wywołania. Do zakończenia procesu służy polecenie kill PID (SIGTERM 15) lub kill -9 PID (SIGKILL — wymuszone). Polecenia diagnostyczne sprzętu: lspci, lsusb, lshw, dmesg, dmidecode, free, df, uname, smartctl. Polecenia operujące na plikach (ls, mkdir, cp, mv, rm, cat, chmod) NIE diagnozują sprzętu. htop to ulepszona wersja top z kolorowym interfejsem.