Przejdź do głównej zawartości

Linux RHCSA cz.36 - Monitorowanie wydajności systemu - procesy

W czasie, gdy w systemie zostaje uruchomiony program lub wydane zostanie polecenie tworzony zostaje dla niego proces. Proces taki posiada unikalny identyfikator (PID) by można było go zlokalizować. Procesy systemu są krytyczną kwestią z punktu widzenia utrzymania środowiska i realizowania usług dla użytkowników i klientów systemu. Zarządzanie procesami pomoże w utrzymaniu stabilnego działania środowiska oraz w momencie gdy działanie stanie się niestabilne. Polecenia mające zastosowanie w zarządzaniu procesami w systemie: 

  • ps       - Informacje na temat uruchomionych procesów
  • kill      - Zakończenie działania procesu (zabicie go)
  • pgrep - Wyszukanie procesu po numerze PID
  • pidof - Wyświetli wszystkie procesy danego serwisu lub polecenia
  • top     - Monitorowanie zasobów systemowych 
  • renice - Nadanie ważności dla procesów
Na początek zobaczmy jakie procesy uruchomione ma użytkownik root

# ps
PID TTY TIME CMD
4474 pts/3 00:00:00 bash
4506 pts/3 00:00:00 ps

Polecenie ps posiada dużo opcji służących do formatowania i uzyskiwania różnych wyników dotyczących procesów i aby zobaczyć dodatkowe bardziej szczegółowe informacje możemy użyć przełącznik "-u".

# ps u
USER PID %CPU %MEM VSZ RSS TTY STAT START TIME COMMAND
root 2387 0.0 0.1 1660 424 tty1 Ss+ 07:30 0:00 /sbin/mingetty tty1
root 2388 0.0 0.1 1660 420 tty2 Ss+ 07:30 0:00 /sbin/mingetty tty2
root 2389 0.0 0.1 1660 420 tty3 Ss+ 07:30 0:00 /sbin/mingetty tty3
root 2390 0.0 0.1 1660 420 tty4 Ss+ 07:30 0:00 /sbin/mingetty tty4
root 2391 0.0 0.1 1660 448 tty5 Ss+ 07:30 0:00 /sbin/mingetty tty5
root 2392 0.0 0.1 1660 420 tty6 Ss+ 07:30 0:00 /sbin/mingetty tty6

Teraz poza nr PID widać również zużycie pamięci i procesora. Dobrze jest również stosować kombinacje przełączników i wykorzystać "grep" by uzyskiwać odfiltrowane informacje na temat tego co akurat w danym momencie jest interesujące. 

# ps aux | grep ssh
root 4286 0.0 0.1 62616 1216 ? Ss Sep23 0:00 /usr/sbin/sshd
root 15872 0.0 0.3 90116 3248 ? Ss 10:06 0:00 sshd: user01 [priv]
user01 15874 0.0 0.1 90116 1740 ? S 10:06 0:00 sshd: user01@pts/0
user01 15921 0.0 0.0 61176 728 pts/0 R+ 10:14 0:00 grep ssh

Pełne możliwości polecenie ps można poznać po wpisaniu : 

$ ps - help

Znajomość polecenia ps i manipulacji przełącznikami umożliwi rozwiązanie wielu problemow, jakie napotkasz na egzaminie RedHat i jest to wielka pomoc, jaka przydaje się w prawdziwym administrowaniu systemem. 

Co dzieje się jeżeli jeden z procesów działających w systemie przestanie podlegać kontroli? W taki wypadku można zastosować polecenie "kill", które zakończy jego działanie. Polecenie "kill" stosujemy zawsze w przypadku, gdy proces danej usługi nie odpowiada i wiadomo już, że należy taką usługę zrestartować. 

Składnia polecenia kill : # kill PID

Jeżeli chcesz zatrzymać usługę SSH ponieważ nie działa prawidłowo, należy wyszukać jej numer PID i następnie zakończyć jej działanie poleceniem "kill". Jeżeli zobaczymy że PID dla SSH to 4125 poleceniem usuwającym proces jest : 

# kill 4125 

Czasami nawet polecenie "kill" może nie poradzić sobie z wyłączeniem procesu i w takim wypadku można zastosować przełącznik -9 - jest to opcja nadająca wyższy priorytet dla systemu. 

# kill -9 4125

Co zrobić jeżeli nie znamy numeru PID procesu jaki chcemy wyłączyć? Wyszukanie PID procesu można wykonać stosując polecenie "ps" z dodatkowymi przełącznikami oraz filtracją "grep" jeżeli to nie wystarcza możemy spróbować użyć dwóch innych poleceń : pidof oraz pgrep

Zobaczmy działanie pidof, gdzie jako hasła wyszukiwania używamy nazwy usługi lub demona. I tak chcąc znaleźć proces usługi SSH robimy : 

# pidof sshd
15874 15872 4286

Jeżeli chcemy mieć wynik w łatwiejszym do odczytu formatowaniu dobrze sprawdzi się: 

# pgrep sshd
4286
15872
15874

Dobrze jest wiedzieć jak znaleźć dany proces, który chcemy wyłączyć i jak wyszukać go w gąszczu innych procesów, ale co jeżeli musimy wiedzieć więcej na temat procesu np.: ile zużywa pamięci i mocy procesora? Poznajmy polecenie "top". Polecenie to daje szczegółowe informacje o procesach w tym o zużyciu zasobów dla danego procesu. 


W celu zakończenia widoku TOP wciskamy klawisz "q". 

By osiągnąć większy komfort pracy w systemie możliwe jest skonfigurowanie ważności procesów przez nadanie im priorytetów. Do tego posłuży polecenie "renice" nadające priorytet dla CPU. 

Składnia polecenie renice: # renice <prirytet> [opcje]

Opcje polecenia renice:
  • -p PID  - Zmiana priorytetu dla procesu o danym numerze PID
  • -u user - Zmiana priorytetu dla procesów danego użytkownika
Wartości priorytetów zawierają się w przedziale od -20 do 20. Tylko procesy użytkownika root posiadają priorytet równy 0. By zmienić priorytet wybranemu procesowi wykonujemy : 

# renice -2 3874

To polecenie zmieni priorytet usługi o numerze PID 3874 na lepszy. Znajomość zagadnienia procesów pozwoli stać Ci się lepszym administratorem, a umiejętności te pozwolą szybciej znaleźć, zdiagnozować i naprawić pojawiające się problemy.

Komentarze

Najczęściej czytane w tym miesiącu

50 popularnych pytań dotyczących systemu Linux zadawanych na rozmowach kwalifikacyjnych. (Pytania & Odpowiedzi)

Jak dodać użytkownika w systemie Windows z poziomu konsoli CMD? (net user, net localgroup)

Generowanie testowych plików o określonej wielkości