Bociek PLD - Pisarz
I. Informacje podstawowe
II. Instalacja
III. Podręcznik użytkownika
Zasoby systemu
Procesy i zasoby
IV. Podręcznik administratora
V. Tworzenie PLD - Praktyczny poradnik
VI. O podręczniku
O tej książce
Spis treści
Inne wersje tego dokumentu
PDF
HTML (jeden plik)
TXT
Odnośniki
Tworzymy dokumentację PLD
Strona PLD
Listy dyskusyjne PLD

Procesy i zasoby

<- ->
 

Listę wszystkich uruchomionych procesów oraz dotyczące ich dane otrzymamy dzięki poleceniu ps

$ ps aux

USER       PID %CPU %MEM   VSZ  RSS TTY      STAT START   TIME COMMAND
root      1350  0.0  0.1  1788  868 ?        Ss   May27   0:00 syslog-ng
zenek     2252  0.0  1.2 11316 6668 ?        Ss   May27   0:01 xfce4-session
root      2301  0.0  0.3  2748 1556 tty2     Ss   May27   0:00 -bash

Oraz w formie drzewa procesów rodziców i procesów potomnych

$ ps xf

 PID TTY      STAT   TIME COMMAND
2459 ?        S      0:32 xmms
2460 ?        S      0:00  \_ xmms
2461 ?        S      0:00      \_ xmms
2465 ?        S      0:00      \_ xmms
2816 ?        S      0:00      \_ xmms

W przypadku potrzeby ciągłego śledzenia zmian w systemie możemy użyć programu top. Program ten pokazuje najbardziej zasobożerne procesy. Dodatkowo na bieżąco wyświetla całkowite zużycie procesora (CPU), pamięci operacyjnej(Mem) oraz zajętość przestrzeni wymiany (Swap).

$ top

top - 01:38:54 up  3:28,  4 users,  load average: 0.10, 0.08, 0.08
Tasks:  63 total,   2 running,  61 sleeping,   0 stopped,   0 zombie
Cpu(s):  2.3% us,  1.3% sy,  0.0% ni, 96.1% id,  0.0% wa,  0.3% hi,  0.0% si
Mem:    516244k total,   440344k used,    75900k free,    11840k buffers
Swap:  1076312k total,        0k used,  1076312k free,   328012k cached

 PID USER      PR  NI  VIRT  RES  SHR S %CPU %MEM    TIME+  COMMAND                                                        
2240 root      15   0 62644  24m  45m S  1.6  4.9   7:37.40 X                                                              
2892 zenek     16   0  1880  928 1672 R  0.6  0.2   0:00.05 top                                                            
2695 zenek     16   0  6532 3824 5056 R  0.3  0.7   0:01.63 xterm                                                          
   1 root      16   0  1532  584 1372 S  0.0  0.1   0:00.82 init                                                           

Informacje o samej pamięci i przestrzeni wymiany uzyskamy dzięki komendzie free

$ free
             total       used       free     shared    buffers     cached
Mem:        516244     445536      70708          0      11880     332728
-/+ buffers/cache:     100928     415316
Swap:      1076312          0    1076312

Całkowita ilość zużytej pamięci (razem z buforami dyskowymi) mieści się w pierwszym wierszu w kolumnie USED. Zaś ilość pamięci zużytej jedynie przez programy mieści się w drugim wierszu w tej samej kolumnie.

Do śledzenia zmian zużycia zasobów systemu w funkcji czasu warto polecić program vmstat z liczbą sekund w parametrze. Podany czas jest odstępem pomiędzy pomiarami, program pokazuje zmiany w wykorzystaniu pamięci, obszaru wymiany, czasu procesora, przerwań czy wielkości transferu do i z urządzeń masowych:

# vmstat 2
procs -----------memory---------- ---swap-- -----io---- --system-- ----cpu----
 r  b   swpd   free   buff  cache   si   so    bi    bo   in    cs us sy id wa
 0  0      0 276896    980  89812    0    0   377     6  482   818  6  2 90  1
 0  0      0 276780    980  89816    0    0     0     0  456   770  0  0 100  0
 0  0      0 276772    980  89816    0    0     0    28  461   846  0  0 100  0

Szczegółowy opis oznaczeń kolumn odnajdziemy w podręczniku systemowym man/info.

Do procesów których jesteśmy właścicielami możemy wysyłać sygnały (root może wysłać sygnał do każdego procesu). Aby zakończyć jakiś proces należy do procesu wysłać sygnał TERM. Dokonuje się tego poleceniem kill lub killall. Pierwsze zabija proces o podanym numerze PID (unikalnym identyfikatorze procesu) np.:

$ kill 2901

Drugie z poleceń zabija wszystkie procesy, które mają podaną nazwę np.:

$ killall xmms

Sygnał TERM może być nieskuteczny w niektórych wypadkach, wtedy należy użyć bardziej brutalnej metody - sygnału KILL. Możemy go wysłać programem kill lub killall z odpowiednim parametrem: "-9" lub "-KILL":

kill -9 2901

W systemach uniksowych można ustawiać priorytety uruchamianym programom bądź też modyfikować bieżący priorytet działającego procesu. Priorytet jest nazywany jest "liczbą nice". Mówi ona jak mili jesteśmy dla systemu i innych użytkowników. Priorytet możemy ustawiać od -20 do +19, przy czym domyślna wartość zazwyczaj wynosi 0. Ujemne wartości oznaczają wyższy priorytet, zaś dodatnie niższy. Ujemną wartość może nadać tylko superużytkownik.

Aby uruchomić proces z priorytetem innym niż domyślny należy użyć programu nice np.:

$ nice -n +5 mc

Działającym procesom można zmieniać priorytet. Aby to zrobić używamy polecenia renice:

$ renice +5 mc

 
<- ->