Przegląd poleceń wraz z ćwiczeniami dotyczących zarządzania procesami.
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 .