Zarządzanie procesami

Przegląd poleceń wraz z ćwiczeniami dotyczących zarządzania procesami.

Contents

top

Listę działających procesów oraz inne parametry dotyczące ich (np.: właściciel albo czas procesora) poznamy wydając polecenie top. Top to bardzo wygodne narzędzie, jego informacje są uaktualniane co kilka sekund, dzięki czemu możemy na bieżąco obserwować obciążenie systemu. Możemy także zmienić sposób sortowania danych z domyślnego według obciążenia systemu na np.: sortowanie po wieku procesu, zajętośći pamięci itp.

Wciskając klawisz h uzyskamy krótką pomoc do programu.

ćwiczenie 1

Proszę sprawdzić które procesy zajmują najwięcej pamięci.

htop

Listę działających procesów oraz inne parametry dotyczące ich (np.: właściciel albo czas procesera, które zajmują) poznamy wydając polecenie top. Htop to bardzo wygodne narzędzie, znacznie bardziej rozbudowane niż przedstawiony wyżej top.

ps

Innym przydatnym programem jest ps. Pozwala on zobaczyć statusy procesów.

[ziutus@localhost ziutus]$ ps -au USER       PID %CPU %MEM   VSZ  RSS TTY      STAT START   TIME COMMAND ziutus    2406  0.0  0.6  2764  800 pts/2    S    14:15   0:00 /bin/bash ziutus    3007  0.0  0.6  2764  840 pts/2    R    17:25   0:00 ps -au

W przeciwieństwie do top nie jest one interakcyjne, dzięki czemu możemy je wykorzystać w skryptach albo bardziej skomplikowanych poleceniach. Poniższy przykład pozwala sprawdzić statusy wszystkich programów związanych z bazą danych MySQL.

[ziutus@localhost ziutus]$ ps -aux | grep mysql mysql     1459  0.0  4.2 27608 5440 ?        S    11:10   0:00 /usr/sbin/mysqld mysql     1570  0.0  4.2 27608 5440 ?        S    11:11   0:00 /usr/sbin/mysqld mysql     1572  0.0  4.2 27608 5440 ?        S    11:11   0:00 /usr/sbin/mysqld mysql     1617  0.0  4.2 27608 5440 ?        S    11:11   0:00 /usr/sbin/mysqld ziutus    2708  0.0  0.0  3312    4 pts/1    S    16:06   0:00 mysql -u root ziu mysql     2709  0.0  4.2 27608 5440 ?        S    16:06   0:00 /usr/sbin/mysqld ziutus    3010  0.0  0.4  1760  588 pts/2    D    17:29   0:00 grep mysql

 

ćwiczenie 2

Proszę sprawdzić jakie procesy związane z Apachem są uruchomione.

pstree – graficzna zależność między procesami

Czasem konieczne może się okazać znalezienie zależności między procesami, czyli który proces jest macierzystym dla kolejnych. Pomoże w tym nam polecenie pstree

[ziutus@localhost ziutus]$ pstree init-+-alarmd      |-atd      |-kdeinit-+-artsd      |         `-konsole-+-bash---mysql      |                   |-bash---pstree      |-9*[kdeinit]      |-kdeinit---quanta      |-login---bash---startx---xinit-+-X                                     `-startkde---ksmserver

 

ćwiczenie 3

Proszę wykonać polecenie pstree i sprawdzić ile procesów jest związanych z Apachem.

Zabijanie i wysyłanie sygnałów do procesów

W pracy administratora są bardzo przydatne dwa polecenia: kill i killall. Pierwsze pozwala na wysłanie sygnału do programu np.: natychmiastowy rozkaz zakończenia działania gdy znamy PID programu, drugi gdy znamy nazwę programu. Przykłady:

[root@localhost ziutus]# ps -aux | grep mysql mysql     1459  0.0  4.2 27608 5440 ?        S    11:10   0:00 /usr/sbin/mysqld mysql     1570  0.0  4.2 27608 5440 ?        S    11:11   0:00 /usr/sbin/mysqld mysql     1572  0.0  4.2 27608 5440 ?        S    11:11   0:00 /usr/sbin/mysqld mysql     1617  0.0  4.2 27608 5440 ?        S    11:11   0:00 /usr/sbin/mysqld ziutus    2708  0.0  0.0  3312    4 pts/1    S    16:06   0:00 mysql -u root ziu mysql     2709  0.0  4.2 27608 5440 ?        S    16:06   0:00 /usr/sbin/mysqld root      3055  4.0  0.5  1880  724 pts/4    S    17:58   0:00 grep mysql [root@localhost ziutus]# renice -1 -p 1617 1617: old priority 0, new priority -1 [root@localhost ziutus]# kill -15 2708 [root@localhost ziutus]# killall -15 mysql [root@localhost ziutus]#

 

ćwiczenie 4

Proszę zalogować się jako użytkownik tester1 a następnie z poziomu konta root zabić jego powłokę.

Priorytet aplikacji i jego zmiana

Linux, jak każdy porządny system wieloużytkowy, pozwala na nadawanie procesom priorytetów, czyli określaniu co jak dużo i kosztem kogo może on wykorzystać. Służą do tego dwa polecenia: nice i renice.

Priorytety w Linuksie wahają się w granicach między -20 a 19, gdzie -20 to największy a 19 najmniejszy. Do priorytetów poniżej 0 ma dostęp jedynie super użytkownik (administrator) i wykorzystuje się do funkcji systemowych albo wyjątkowo ważnych procesów.

Nice pozwala na nadanie priorytetu w momencie uruchomienia. Składnia polecenia jest prosta: najpierw parametrem -n liczba podajemy priorytet programu a następnie wskazujemy program wraz z jego parametrami. np.

[root@localhost ziutus]# nice -n 19 bzimage

Priorytet działającego już programu możemy zmienić przy pomocy polecenia renice, musimy znać tylko jego ID czyli PID. Dzięki poleceniu ps jest to jednak stosunkowo proste. np.:

[root@localhost ziutus]# ps -aux | grep mysql mysql     1459  0.0  4.2 27608 5440 ?        S    11:10   0:00 /usr/sbin/mysqld mysql     1570  0.0  4.2 27608 5440 ?        S    11:11   0:00 /usr/sbin/mysqld mysql     1572  0.0  4.2 27608 5440 ?        S    11:11   0:00 /usr/sbin/mysqld mysql     1617  0.0  4.2 27608 5440 ?        S    11:11   0:00 /usr/sbin/mysqld ziutus    2708  0.0  0.0  3312    4 pts/1    S    16:06   0:00 mysql -u root ziu mysql     2709  0.0  4.2 27608 5440 ?        S    16:06   0:00 /usr/sbin/mysqld root      3055  4.0  0.5  1880  724 pts/4    S    17:58   0:00 grep mysql [root@localhost ziutus]# renice -1 -p 1617 1617: old priority 0, new priority -1

ćwiczenie 5

Proszę zmienić priorytet programu Apache (któregoś z uruchomionych) na 3 .

Dodaj komentarz