Jaka jest różnica pomiędzy poleceniem ps a poleceniem top w systemie Linux?
A. Polecenie ps pozwala na wyświetlanie uprawnień, z jakimi działa proces, a top nie pozwala.
B. Polecenie ps nie pokazuje stopnia wykorzystania CPU, a polecenie top ma taką funkcjonalność.
C. Polecenie top umożliwia wyświetlenie PID procesu, a ps nie.
D. Polecenie top wyświetla aktualnie działające w systemie procesy odświeżając na bieżąco informacje, a ps nie.
Pytanie z egzaminu CKE, styczeń 2019 (arkusz E.12-X-19.01).
Polecenie top różni się od ps przede wszystkim sposobem prezentowania danych o procesach. ps pokazuje migawkę stanu procesów w danym momencie, czyli jednorazowy wynik wykonania polecenia. Natomiast top działa interaktywnie i odświeża informacje na bieżąco, zwykle co kilka sekund. Dzięki temu można obserwować, jak zmienia się użycie CPU, pamięci RAM, liczba procesów, obciążenie systemu czy czas działania poszczególnych zadań. W praktyce top przydaje się wtedy, gdy komputer zaczyna działać wolno i trzeba szybko sprawdzić, który proces „zjada” zasoby. Z mojego doświadczenia to jedno z pierwszych narzędzi, po które sięga administrator Linuxa przy diagnozowaniu wydajności.
ps też jest bardzo ważne, ale ma trochę inne zastosowanie. Używa się go np. w skryptach administracyjnych, do wyszukania konkretnego procesu, sprawdzenia PID albo połączenia z grep, na przykład ps aux | grep apache. Dobra praktyka jest taka, że top stosujemy do monitorowania dynamicznego, a ps do uzyskania konkretnej, statycznej listy procesów. W administracji systemami Linux i Unix warto znać oba narzędzia, bo uzupełniają się, a nie zastępują jeden drugiego. Warto też pamiętać, że nowoczesną alternatywą dla top bywa htop, ale top jest standardowo dostępny w wielu systemach, więc jego znajomość jest po prostu praktyczna.
ps też jest bardzo ważne, ale ma trochę inne zastosowanie. Używa się go np. w skryptach administracyjnych, do wyszukania konkretnego procesu, sprawdzenia PID albo połączenia z grep, na przykład ps aux | grep apache. Dobra praktyka jest taka, że top stosujemy do monitorowania dynamicznego, a ps do uzyskania konkretnej, statycznej listy procesów. W administracji systemami Linux i Unix warto znać oba narzędzia, bo uzupełniają się, a nie zastępują jeden drugiego. Warto też pamiętać, że nowoczesną alternatywą dla top bywa htop, ale top jest standardowo dostępny w wielu systemach, więc jego znajomość jest po prostu praktyczna.
W tym pytaniu łatwo pomylić pojedyncze cechy poleceń z ich główną różnicą. Zarówno ps, jak i top potrafią pokazywać PID procesu, czyli identyfikator procesu używany na przykład przy poleceniu kill. Nie jest więc tak, że tylko top umożliwia wyświetlenie PID. W typowym użyciu ps aux albo ps -ef kolumna z PID jest jedną z podstawowych informacji, więc taki wniosek raczej wynika z patrzenia tylko na bardzo uproszczone przykłady z terminala.
Podobnie wygląda sprawa z informacjami o użytkowniku i kontekście uruchomienia procesu. ps może pokazać użytkownika, właściciela procesu, terminal, czas CPU i wiele innych pól, zależnie od użytych opcji. top również prezentuje użytkownika procesu i pozwala sortować oraz obserwować procesy w czasie rzeczywistym. Nie jest to narzędzie typowo do analizy uprawnień w sensie pełnego audytu bezpieczeństwa, ale stwierdzenie, że nie pokazuje takich informacji wcale, jest zbyt mocne. W praktyce do dokładniejszego badania uprawnień używa się też poleceń takich jak id, ls -l, getfacl czy narzędzi związanych z SELinux/AppArmor, a nie samego top.
Mylić może też wykorzystanie CPU. ps może pokazać procent użycia procesora, na przykład w formacie ps aux widoczna jest kolumna %CPU. Różnica polega nie na tym, że ps nie zna takich danych, tylko na tym, że pokazuje je jako stan uchwycony w chwili wykonania polecenia. top aktualizuje ekran cyklicznie, dlatego znacznie lepiej nadaje się do bieżącego monitorowania obciążenia. Moim zdaniem najprostsza zasada do zapamiętania jest taka: ps to zdjęcie procesów, a top to coś w rodzaju podglądu na żywo. Ta różnica jest ważna w diagnostyce systemu, szczególnie gdy szukamy procesu powodującego chwilowe skoki obciążenia CPU lub pamięci.
Podobnie wygląda sprawa z informacjami o użytkowniku i kontekście uruchomienia procesu. ps może pokazać użytkownika, właściciela procesu, terminal, czas CPU i wiele innych pól, zależnie od użytych opcji. top również prezentuje użytkownika procesu i pozwala sortować oraz obserwować procesy w czasie rzeczywistym. Nie jest to narzędzie typowo do analizy uprawnień w sensie pełnego audytu bezpieczeństwa, ale stwierdzenie, że nie pokazuje takich informacji wcale, jest zbyt mocne. W praktyce do dokładniejszego badania uprawnień używa się też poleceń takich jak id, ls -l, getfacl czy narzędzi związanych z SELinux/AppArmor, a nie samego top.
Mylić może też wykorzystanie CPU. ps może pokazać procent użycia procesora, na przykład w formacie ps aux widoczna jest kolumna %CPU. Różnica polega nie na tym, że ps nie zna takich danych, tylko na tym, że pokazuje je jako stan uchwycony w chwili wykonania polecenia. top aktualizuje ekran cyklicznie, dlatego znacznie lepiej nadaje się do bieżącego monitorowania obciążenia. Moim zdaniem najprostsza zasada do zapamiętania jest taka: ps to zdjęcie procesów, a top to coś w rodzaju podglądu na żywo. Ta różnica jest ważna w diagnostyce systemu, szczególnie gdy szukamy procesu powodującego chwilowe skoki obciążenia CPU lub pamięci.