Unix - procesy
'tedd' T. K dzierski
str. 1/1 (ost. akt.: 14-02-05)
Wymagania.we: przerobienie działu 'pliki i kartoteki', przerobienie działu 'edytory'
Procesy
Ka dy uruchomiony skrypt, program, program rezydentny – niezale nie od tego kto go uruchomił (system, u ytkownik) – jest przez Unixa traktowany jako
proces. ten, kto uruchomił proces jest jego wła cicielem – podobnie jak to ma miejsce z plikami wła ciciel ma wpływ na swoje procesy. Administrator mo e
wpływa na działanie dowolnego procesu. Zanim zaczniemy sterowa procesami – musimy by w stanie wy wietla informacje o bie aco uruchomionych
procesach.
wy wietl informacje o procesach
ps [ parametry ]
Komenda
ps bez adnych parametrów wy wietla krótk informacj o procesach u ytkownika, który wykonał t komend , uruchomionych na terminalu z
którego komenda
ps została wykonana. To nam zwykle nie wystarcza – najcz ciej komend ps wykonujemy po to, eby zebra informacj o zablokowanych
procesach (zap tlone programy, le napisane skrypty, uruchomione współbie nie procesy, etc.). Komenda
ps jest wtedy wykonywana na innym - ni ten na
którym działa proces – terminalu.
Na parametry komendy
ps musimy zwróci szczególn uwag – w ró nych wersjach Unixa parametry wykonuj ce podobne akcje maj zwykle całkiem ró n
posta . W poni szym zestawieniu podajemy tylko najcz ciej u ywane parametry
Unix - procesy
'tedd' T. K dzierski
str. 2/2 (ost. akt.: 14-02-05)
-A
listuj wszystkie procesy, nie tylko procesy u ytkownika który wykonał komend ps
-f
‘pełny’ listing – pełna informacja o procesach
-u
nazwa
wy wietlaj informacje tylko o procesach u ytkownika
nazwa
Najcz ciej u ywana kombinacja parametrów: -Af
-a
listuj wszystkie procesy, nie tylko procesy u ytkownika który wykonał komend ps
-x
wy wietlaj równie informacje o procesach nie doł czonych do adnego terminala
(‘
without controling terminal’ – s to najcz ciej procesy rezydentne, działaj ce ‘w tle’)
-u
wy wietlaj c informacje o procesach wy wietlaj nazw u ytkownika i czas pocz tku działania procesu
Najcz ciej u ywana kombinacja parametrów:
-aux
Informacja o procesach te mo e wygl da inaczej w ró nych wersjach Unixa:
ps –Af | less
UID
PID
PPID C
STIME
TTY
TIME CMD
root
1
0
0
Sep 30
?
0:53 /etc/init
nowak
599038
1
0
15:02:46
?
0:00 grade_svc
Unix - procesy
'tedd' T. K dzierski
str. 3/3 (ost. akt.: 14-02-05)
nowak
635226
536862 0
13:22:19
pts/17 0:00 pine
ps –aux | less
USER
PID
%CPU %MEM
SIZE RSS
TTY
STAT START
TIME COMMAND
bin
192
0.0
0.3
768
392
?
S
Sep 3
0:02 portmap
nobody
3348 0.0
1.4
3036 1820 ?
S
Oct 23
0:00 httpd
oracle
368
0.0
2.0
19916 2604 ?
S
Sep 3
0:00 ora_pmon_AXII
Sugeruj sprawdzenie (
man ps) we własnej wersji Unixa, jakie jest znaczenie poszczególnych kolumn z opisu procesów. To co b dzie nam potrzebne w
dalszym omawianiu procesów to identyfikator procesu (PID) i jego nazwa (CMD lub COMMAND).
wy lij sygnał do procesu:
kill –sygnał pid
Wy lij sygnał numer
sygnał do procesu o numerze pid. Sygnały o numerach od 1 do 8 mog by ‘przechwycone’ przez procesy (zob. man signal) u ywaj ce
standardowej biblioteki C. Sygnałów tych mo na u y do sterowania ‘z zewn trz’ procesem rezydentnym. Wyobra my sobie proces
p, który po uruchomieniu
zaczyna wykonywa – w p tli – długie (liczone w godzinach) obliczenia. Je eli odpowiednio napiszemy taki proces, to wysyłaj c mu komend
kill odpowiedni
sygnał mo emy np. spowodowa zapami tanie na pliku wyników cz stkowych, ponowne zainicjowanie oblicze po zmianie warunków pocz tkowych, etc. –
bez przerywania działania procesu.
Sygnał
9 (
kill –9 pid) jest interpretowany przez system – powoduje natychmiastowe, bezwarunkowe zako czenie procesu o podanym identyfikatorze.
Unix - procesy
'tedd' T. K dzierski
str. 4/4 (ost. akt.: 14-02-05)
Nale y bardzo uwa a podczas wpisywania identyfikatora procesu w komendzie ‘kill –9’. Je eli zamiast identyfikatora zap tlonego procesu
wpiszemy identyfikator shella z którym pracujemy (to te jest proces) – jego zako czenie spowoduje tak sam akcj jak wykonanie
komendy logout – zostaniemy odł czeni od systemu.
Jeszcze wi ksz uwag musimy zwróci na identyfikator procesu kiedy działamy jako administrator. Je eli zamiast zap tlonego procesu
u ytkownika ‘nowak’ zako czymy shell u ytkownika ‘kowalski’ – obaj b d nieszcz liwi. Administrator mo e zako czy dowolny proces
dowolnego u ytkownika
‘interaktywne’ wy wietlanie informacji o bie cym obci eniu komputera
top
Komenda
top wy wietla informacje o bie co działaj cych procesach i obci eniu, jakie generuj w systemie. Posta wy wietlanej informacji zale y od wersji
Unixa jakiej u ywamy:
top
IRIX64 elf 6.5 IP27 load averages: 0.05 0.03 0.00 14:09:30
205 processes: 186 sleeping, 5 zombie, 13 stopped, 1 running
2 CPUs: 98.3% idle, 0.5% usr, 1.2% ker, 0.0% wait, 0.0% xbrk, 0.0% intr
Memory: 256M max, 183M avail, 102M free, 512M swap, 498M free swap
PID
PGRP USERNAME
PRI
SIZE RES STATE TIME WCPU% CPU% COMMAND
636653
636653 sgitedd
20
2608K 1600K run/0 0:11 1.7
1.6
top
633308
579859 postfix
20
2240K 1184K sleep 0:00 0.0
0.11 cleanup
Unix - procesy
'tedd' T. K dzierski
str. 5/5 (ost. akt.: 14-02-05)
659
659
root
20
2128K 560K sleep 37:37 0.1
0.09 llbd
top
1:35pm up 52 days, 20:39, 1 user, load average: 0.00, 0.00, 0.00
49 processes: 48 sleeping, 1 running, 0 zombie, 0 stopped
CPU states: 0.3% user, 0.3% system, 0.0% nice, 99.4% idle
Mem: 127716K av, 124232K used, 3484K free, 40376K shrd, 65280K buff
Swap: 130748K av, 620K used, 130128K free 38356K cached
PID
USER PRI
NI
SIZE RSS
SHARE STAT LIB
%CPU %MEM TIME COMMAND
7670 tedd 18
0
724
724
556
R
0
0.5
0.5
0:06 top
7528 root 3
0
1272 1272 836
S
0
0.1
0.9
0:01 sshd
1
root 0
0
388
388
328
S
0
0.0
0.3
0:02 init
Ponownie sugeruj sprawdzenie jakie informacje o procesach wy wietla komenda
top w Unixie w którym pracujemy. To co jest ‘wspólne’ dla wszystkich
wersji komend
top to:
•
interaktywno
komenda top uaktualnia list wy wietlanych procesów co zadany okres czasu (zwykle co 2-3 sekundy, mo na zmieni t warto ). Otrzymujemy w ten
sposób mo liwo ledzenia – na bie co, w sposób ci gły procesów działaj cych w naszym systemie
•
mo liwo zmiany kolejno ci w jakiej wy wietlane s procesy
Unix - procesy
'tedd' T. K dzierski
str. 6/6 (ost. akt.: 14-02-05)
po uruchomieniu komenda top reaguje na komendy wprowadzane z klawiatury. Rodzaj komend zale y od wersji komendy top – zawsze jednak, po
naci ni ciu klawisza
h (help) zobaczymy na ekranie spis tych komend. Zawsze równie istnieje mo liwo zmiany kolejno ci w jakiej wy wietlane s procesy
– mo emy je uporz dkowa pod wzgl dem czasu CPU, zaj to ci pami ci – rzeczywistej lub wirtualnej, etc.
•
mo liwo zmiany priorytetu procesu
po naci ni ciu klawisza r (renice – zmiana priorytetu procesu) mo emy wprowadzi pid procesu i nowy priorytet (IRIX: najpierw priorytet potem pid, Linux:
najpierw pid potem priorytet – to si czasem nazywa “standaryzacja” ];-) ). Priorytety w Unixie działaj nast puj co:
•
ka dy proces ma własny priorytet, nadawany w momencie uruchamiania procesu. Priorytety procesów s liczbami, zwykle z przedziału –20 do +20.
Im
mniejsza liczba tym wi kszy priorytet. Procesy które maj priorytet +20 działaj tylko wtedy, kiedy aden inny proces w systemie nie działa.
Procesy z priorytetem –20 działaj ‘zawsze’ – inne procesy działaj tyko wtedy, kiedy nie działaj procesy z priorytetem –20.
•
pocz tkowa warto priorytetu z jakim uruchamiany jest proces jest zwykle ustawiana ‘po rodku’ – na warto zero. Mo na zmieni t warto
uruchamiaj c proces komend nice –n liczba komenda ... – liczba mo e mie warto dodatni lub ujemn (ujemn warto mo e poda tylko
administrator) – jest to liczba o jak zmieniany jest standardowy priorytet uruchamianego procesu. Je eli ta liczba jest
dodatnia – zmniejszamy
priorytet, je eli jest
ujemna – zwi kszamy priorytet procesu
Test.wy:
•
zaloginuj si dwukrotnie do systemu. W jednym zadaniu uruchom edytor na dowolnym pliku, w drugim – znajd identyfikator
uruchomionego edytora a nast pnie zako cz go komend
kill –9
•
zaloginuj si dwukrotnie do systemu, w jednym z zada uruchom edytor, w drugim – komend
top. Znajd identyfikator uruchomionego
edytora, zmie jego priorytet działania
Koniec
Nast pny rozdział:
przetwarzanie_teksowe.doc