SlideShare a Scribd company logo
1 of 27
Lekcja 5Lekcja 5
Zarządzanie procesamiZarządzanie procesami
CeleCele
Po zakończeniu tej lekcji dowiesz się:Po zakończeniu tej lekcji dowiesz się:
 Czym jest proces w systemie LinuxCzym jest proces w systemie Linux
 W jaki sposób są uruchamiane procesyW jaki sposób są uruchamiane procesy
 Jak można kończyć procesyJak można kończyć procesy
 W jaki sposób zarządzać procesamiW jaki sposób zarządzać procesami
ProcesyProcesy
 ProcesProces jest to pojedynczy program wykonujący się we własnejjest to pojedynczy program wykonujący się we własnej
przestrzeni adresowej.przestrzeni adresowej.
 Różnica pomiędzyRóżnica pomiędzy procesemprocesem aa zadaniemzadaniem czyczy poleceniempoleceniem
polega na tym, że te ostatnie mogą składać się z wielu procesówpolega na tym, że te ostatnie mogą składać się z wielu procesów
realizujących określoną czynność.realizujących określoną czynność.
 Proste polecenia jak np.Proste polecenia jak np. lsls wykonują się jakowykonują się jako jeden procesjeden proces
 W systemach UNIX zarządzanie przydziałem czasu procesoraW systemach UNIX zarządzanie przydziałem czasu procesora
(CPU) w dużej mierze odbywa się przez(CPU) w dużej mierze odbywa się przez kontrolę procesówkontrolę procesów..
Cykl życia procesuCykl życia procesu
 Istniejący proces robi dokładną kopię samegoIstniejący proces robi dokładną kopię samego
siebie –siebie – rozwidlenierozwidlenie ((forkingforking))
 Nowy proces to tzw.Nowy proces to tzw. proces potomnyproces potomny ((childchild
processprocess) dziedziczy takie samo środowisko jak) dziedziczy takie samo środowisko jak
proces macierzystyproces macierzysty ((parent processparent process), ale ma inny), ale ma inny
identyfikator procesu (identyfikator procesu (PIDPID))
 Obraz w przestrzeni adresowej procesuObraz w przestrzeni adresowej procesu
potomnego zostaje nadpisany przez procespotomnego zostaje nadpisany przez proces
uruchomiony przez proces potomny za pomocąuruchomiony przez proces potomny za pomocą
wywołania systemowegowywołania systemowego execexec (stąd określenie(stąd określenie
fork-and-execfork-and-exec). Nowy program (lub polecenie)). Nowy program (lub polecenie)
całkowicie zastępuję proces będący duplikatemcałkowicie zastępuję proces będący duplikatem
macierzystego. Środowisko procesu jest takiemacierzystego. Środowisko procesu jest takie
samo.samo.
initinit initinit
gettygetty
loginlogin
shsh
rozwidlanierozwidlanie
wykonywanie
wykonywanie
wykonywanie
initinit
Nadalsięwykonuje
PID 1
PID 1 PID 424
PID 424
PID 424
PID 424 rozwidlanierozwidlanie shsh
grepgrep
wykonywanie
PID 563
PID 563
Tryb dostępu SETUID i SETGIDTryb dostępu SETUID i SETGID
a wykonanie procesówa wykonanie procesów
 Umożliwiają zwykłym użytkownikom wykonywanie zadań, które wymagająUmożliwiają zwykłym użytkownikom wykonywanie zadań, które wymagają
specjalnych przywilejów systemowychspecjalnych przywilejów systemowych
 Przykładowo poleceniePrzykładowo polecenie writewrite (pozwalające na pisanie na wyjście standardowe(pozwalające na pisanie na wyjście standardowe
terminali innych użytkowników) w wielu systemach należy do grupyterminali innych użytkowników) w wielu systemach należy do grupy ttytty
 Do grupy tty należą też wszystkie pliki urządzeń terminali i pseudoterminali.Do grupy tty należą też wszystkie pliki urządzeń terminali i pseudoterminali.
 PoleceniePolecenie writewrite ma ustawiony bitma ustawiony bit SGIDSGID, który powoduje, że wykonanie go przez, który powoduje, że wykonanie go przez
dowolnego użytkownika, skutkuje wykonaniem go z prawami grupydowolnego użytkownika, skutkuje wykonaniem go z prawami grupy ttytty, a co za tym, a co za tym
idzie pozwala na zapis do innych plików terminali, czyli przekazywanie wiadomościidzie pozwala na zapis do innych plików terminali, czyli przekazywanie wiadomości
tekstowych do innych użytkowników.tekstowych do innych użytkowników.
 UWAGA!!! Ustawianie bitówUWAGA!!! Ustawianie bitów SUIDSUID ii SGIDSGID powoduje zagrożenie bezpieczeństwa wpowoduje zagrożenie bezpieczeństwa w
systemie Linux i należy go używać z należytą uwagą.systemie Linux i należy go używać z należytą uwagą.
Procesy c.d.Procesy c.d.
Typy procesówTypy procesów
Procesy interakcyjneProcesy interakcyjne
 Zainicjowane w trakcie sesji rozpoczętej na terminalu i w ramach tej sesjiZainicjowane w trakcie sesji rozpoczętej na terminalu i w ramach tej sesji
kontrolowanekontrolowane
 Mogą się wykonywać jako:Mogą się wykonywać jako:
 procesy pierwszoplanoweprocesy pierwszoplanowe - przez cały czas trwania pozostają związane z- przez cały czas trwania pozostają związane z
terminalem. Na przykład wpisując uniksowe polecenie i czekając na efekty jegoterminalem. Na przykład wpisując uniksowe polecenie i czekając na efekty jego
działania wyświetlane na standardowym wyjściu wykonujemy procesdziałania wyświetlane na standardowym wyjściu wykonujemy proces
pierwszoplanowy. Można je przerywać za pomocą kombinacji CTRL+Cpierwszoplanowy. Można je przerywać za pomocą kombinacji CTRL+C
 procesy tłaprocesy tła – są wykonywane w tle i mogą ale nie muszą być związane z– są wykonywane w tle i mogą ale nie muszą być związane z
terminalem. Są uruchamiane zterminalem. Są uruchamiane z && na końcuna końcu
Np.:Np.:
$ find –perm +2000 –o –perm +4000 –ls > /tmp/lista &$ find –perm +2000 –o –perm +4000 –ls > /tmp/lista &
[1] 7093[1] 7093
[1]+ Done find –perm +2000 –o –perm +4000 –ls > /tmp/lista[1]+ Done find –perm +2000 –o –perm +4000 –ls > /tmp/lista
Procesy c.d.Procesy c.d.
Kontrola procesów – Uniksowa kontrola zadańKontrola procesów – Uniksowa kontrola zadań
PoleceniePolecenie ZnaczenieZnaczenie PrzykładPrzykład
&& Uruchomienie procesu w tleUruchomienie procesu w tle $ polecenie &$ polecenie &
^Z^Z Zatrzymanie procesu pierwszoplanowegoZatrzymanie procesu pierwszoplanowego
$ ^Z$ ^Z
StoppedStopped
jobsjobs Wyświetlenie listy procesów tłaWyświetlenie listy procesów tła
$ jobs$ jobs
[1] – Stopped vi[1] – Stopped vi
[2] – zadanie1 &[2] – zadanie1 &
[3] + stopped zadanie2[3] + stopped zadanie2
%n%n Odwołanie się do procesu tła o numerze nOdwołanie się do procesu tła o numerze n
fgfg Uczynienie procesu tła procesem pierwszoplanowymUczynienie procesu tła procesem pierwszoplanowym $ fg %1$ fg %1
bgbg Uruchomienie zatrzymanego procesuUruchomienie zatrzymanego procesu $ bg %1$ bg %1
%?str%?str Odwołanie się do tego procesu tła, którego polecenieOdwołanie się do tego procesu tła, którego polecenie
uruchamiające zawierauruchamiające zawiera strstr
$ fg %?v$ fg %?v
killkill Wbudowana w shella wersja unixowego polecenia killWbudowana w shella wersja unixowego polecenia kill
służąca do zabijania procesówsłużąca do zabijania procesów
$ kill %2$ kill %2
Procesy c.d.Procesy c.d.
 Procesy uruchamiane przez użytkowników po zakończeniuProcesy uruchamiane przez użytkowników po zakończeniu
sesji terminalowej są automatycznie kończone.sesji terminalowej są automatycznie kończone.
 Aby proces po odłączeniu się użytkownika od serwera działałAby proces po odłączeniu się użytkownika od serwera działał
w dalszym ciągu należy skorzystać z polecenia nohup.w dalszym ciągu należy skorzystać z polecenia nohup.
# nuhup polecenie &# nuhup polecenie &
Procesy c.d.Procesy c.d.
Procesy kolejkowaneProcesy kolejkowane
 Nie związane z żadnym terminalemNie związane z żadnym terminalem
 Kierowane do odpowiednich kolejekKierowane do odpowiednich kolejek
 Uruchamiane sekwencyjnieUruchamiane sekwencyjnie
 PoleceniePolecenie batchbatch
 Przykład:Przykład:
$ batch <<!$ batch <<!
longjoblongjob
!!
DemonyDemony
 Procesy inicjowane zwykle w czasie startu systemuProcesy inicjowane zwykle w czasie startu systemu
 Procesy o charakterze usługowym, np.. Serwer WWW, baza danych, serwer NEWS,Procesy o charakterze usługowym, np.. Serwer WWW, baza danych, serwer NEWS,
server NNTP, serwer PROXY, itd….server NNTP, serwer PROXY, itd….
 Wykonywane w tle, oczekują na zlecenia wydawane przez inne procesyWykonywane w tle, oczekują na zlecenia wydawane przez inne procesy
Procesy – c.d.Procesy – c.d.
Ważniejsze demony LinuksaWażniejsze demony Linuksa
Element funkcjonalnyElement funkcjonalny OpisOpis Nazwy demonówNazwy demonów
initinit Proces, który zostajeProces, który zostaje
uruchomiony jako pierwszyuruchomiony jako pierwszy
initinit
syslogsyslog Stan systemu, rejestrowanieStan systemu, rejestrowanie
komunikatów o błędziekomunikatów o błędzie
syslogdsyslogd
emailemail Transport wiadomościTransport wiadomości
pocztowychpocztowych
sendmail, qmailsendmail, qmail
drukowaniedrukowanie Bufor wydrukuBufor wydruku lpd, cupsdlpd, cupsd
croncron Periodyczne wykonywaniePeriodyczne wykonywanie
procesówprocesów
crondcrond
ttytty Obsługa terminalaObsługa terminala getty,getty,
syncsync Spłukiwanie bufora dyskuSpłukiwanie bufora dysku bdflushbdflush
stronicowanie i wymianastronicowanie i wymiana Demony obsługująceDemony obsługujące
zarządzanie pamięciązarządzanie pamięcią
wirtualnąwirtualną
kswapdkswapd
Procesy – c.d.Procesy – c.d.
Element funkcjonalnyElement funkcjonalny OpisOpis Nazwy demonówNazwy demonów
InetdInetd Nadrzędny demon TCP/IPNadrzędny demon TCP/IP
odpowiedzialny za uruchamianieodpowiedzialny za uruchamianie
wielu innych na żądaniewielu innych na żądanie
inetd, xinetdinetd, xinetd
Rozwiązywanie nazwRozwiązywanie nazw Proces serwera DNSProces serwera DNS namednamed
RutowanieRutowanie Demon rutowaniaDemon rutowania routed, gatedrouted, gated
DHCPDHCP Dynamiczne konfigurowanie klientaDynamiczne konfigurowanie klienta
siecisieci
dhcpddhcpd
RCPRCP Mapowanie usługi na port sieciowyMapowanie usługi na port sieciowy
dla narzędzia do zdalnegodla narzędzia do zdalnego
wywoływania procedurwywoływania procedur
portmap, rcpbindportmap, rcpbind
NFSNFS System plików sieciowych NFSSystem plików sieciowych NFS nfsdnfsd
SambaSamba Współdzielenie plików/drukarek zWspółdzielenie plików/drukarek z
WindowsWindows
smbd, nmbdsmbd, nmbd
WWWWWW Serwer HTTPSerwer HTTP httpdhttpd
Ważniejsze demony Linuksa – c.d.Ważniejsze demony Linuksa – c.d.
AtrybutyAtrybuty procesuprocesu
Z każdym procesem wykonywanym w LINUX-ie związanych jest wiele atrybutówZ każdym procesem wykonywanym w LINUX-ie związanych jest wiele atrybutów
 Identyfikator procesuIdentyfikator procesu ((PIDPID,, Process IDProcess ID)) – numer jednoznacznie identyfikujący proces– numer jednoznacznie identyfikujący proces
 Identyfikator rodzica procesuIdentyfikator rodzica procesu ((PPIDPPID,, Parent Process IDParent Process ID)) – identyfikator PID procesu– identyfikator PID procesu
będącego rodzicem danego procesubędącego rodzicem danego procesu
 LiczbaLiczba nicenice – wyznacza „ważność” danego procesu w stosunku do innych procesów w– wyznacza „ważność” danego procesu w stosunku do innych procesów w
systemie. (UWAGA! Nie należy jej mylić z aktualnym priorytetem procesu wyliczanymsystemie. (UWAGA! Nie należy jej mylić z aktualnym priorytetem procesu wyliczanym
dynamicznie na podstawie liczby nice oraz zużycia zasobów CPU przez dany proces)dynamicznie na podstawie liczby nice oraz zużycia zasobów CPU przez dany proces)
 TTYTTY – urządzenie reprezentujące terminal kontrolny (bądź pseudoterminal) z którym– urządzenie reprezentujące terminal kontrolny (bądź pseudoterminal) z którym
związany jest dany proceszwiązany jest dany proces
 RUIDRUID,, EUIDEUID – rzeczywisty i efektywny identyfikator użytkownika– rzeczywisty i efektywny identyfikator użytkownika
 RGIDRGID,, EGIDEGID – rzeczywisty i efektywny identyfikator grupy– rzeczywisty i efektywny identyfikator grupy
 %MEM%MEM – ilość zajmowanej prze proces procentowo pamięci– ilość zajmowanej prze proces procentowo pamięci
 STATSTAT – status procesu (S- sleeping, R-running, W-waiting)– status procesu (S- sleeping, R-running, W-waiting)
 %CPU%CPU – ilość zajmowanego procentowo czasu CPU– ilość zajmowanego procentowo czasu CPU
Monitorowanie procesówMonitorowanie procesów
 Linux pozwala monitorować, oraz w ograniczonym zakresie ustalaćLinux pozwala monitorować, oraz w ograniczonym zakresie ustalać
priorytety wykonaniapriorytety wykonania
 Zgrubne oszacowanie obciążenia systemu jest możliwe za pomocąZgrubne oszacowanie obciążenia systemu jest możliwe za pomocą
polecenia:polecenia: uptimeuptime
#uptime#uptime
3:24pm up 2 days, 2:41, 16 users, load average: 1.90, 1.43, 1.333:24pm up 2 days, 2:41, 16 users, load average: 1.90, 1.43, 1.33
 Gdzie ostatnie trzy liczby podają średnią liczbę aktywnych procesów wGdzie ostatnie trzy liczby podają średnią liczbę aktywnych procesów w
ciągu ostatniej minuty, ostatnich pięciu minut i ostatnich piętnastu minut.ciągu ostatniej minuty, ostatnich pięciu minut i ostatnich piętnastu minut.
Limity zasobów procesuLimity zasobów procesu
 Linux stosuje bardzo prosty schemat limitów zasobów. Lista ograniczeń, któreLinux stosuje bardzo prosty schemat limitów zasobów. Lista ograniczeń, które
można nakładać na procesy obejmuje:można nakładać na procesy obejmuje:
 całkowity skumulowany czas CPUcałkowity skumulowany czas CPU
 największy plik, jaki można utworzyć (zarówno od nowa, jak i wydłużając istniejący)największy plik, jaki można utworzyć (zarówno od nowa, jak i wydłużając istniejący)
 maksymalny rozmiar segmentu danych procesumaksymalny rozmiar segmentu danych procesu
 maksymalny rozmiar segmentu stosu procesumaksymalny rozmiar segmentu stosu procesu
 maksymalny rozmiar plikumaksymalny rozmiar pliku corecore (zrzut pamięci procesu tworzonego na skutek pewnych(zrzut pamięci procesu tworzonego na skutek pewnych
błędów)błędów)
 maksymalna ilość pamięci dostępnej dla procesumaksymalna ilość pamięci dostępnej dla procesu
 Limity zasobów można podzielić na dwie kategorie:Limity zasobów można podzielić na dwie kategorie:
 słabe (soft) – ograniczenia nakładane standardowo na proces w momencie jegosłabe (soft) – ograniczenia nakładane standardowo na proces w momencie jego
tworzenia. Można je zwiększać do wartości ogólnosystemowychtworzenia. Można je zwiększać do wartości ogólnosystemowych sztywnych limitów.sztywnych limitów.
Powyżej tych sztywnych limitów zmiana limitów dla danego procesu jest możliwa tylkoPowyżej tych sztywnych limitów zmiana limitów dla danego procesu jest możliwa tylko
przez użytkownika rootprzez użytkownika root
 sztywne (hard)sztywne (hard)
Limity zasobów procesuLimity zasobów procesu
 Do wyświetlania aktualnych limitów w systemie służy polecenieDo wyświetlania aktualnych limitów w systemie służy polecenie ulimitulimit..
OpcjeOpcje –a–a ii -Ha-Ha wyświetlają odpowiednio słabe i sztywne limity:wyświetlają odpowiednio słabe i sztywne limity:
#ulimit –a#ulimit –a
cputimecputime 1:00:001:00:00
filesizefilesize 1048575 kbytes1048575 kbytes
datasizedatasize 65536 kbytes65536 kbytes
stacksizestacksize 4096 kbytes4096 kbytes
coredumpsizecoredumpsize 1024 kbytes1024 kbytes
memoryusememoryuse 32768 kbytes32768 kbytes
#ulimit –Ha#ulimit –Ha
cputimecputime unlimitedunlimited
filesizefilesize unlimitedunlimited
datasizedatasize 3686336 kbytes3686336 kbytes
stacksizestacksize 262144 kbytes262144 kbytes
coredumpsizecoredumpsize unlimitedunlimited
memoryusememoryuse 54528 kbytes54528 kbytes
Limity zasobów procesuLimity zasobów procesu
 Ustawianie limitów poszczególnych zasobów. Zazwyczaj umieszcza się je w plikachUstawianie limitów poszczególnych zasobów. Zazwyczaj umieszcza się je w plikach
inicjujących sesjęinicjujących sesję
ZasóbZasób csh i tcshcsh i tcsh bash i kshbash i ksh
Czas CPUCzas CPU limit cputimelimit cputime sekundysekundy ulimit –tulimit –t sekundysekundy
Maksymalny rozmiar plikuMaksymalny rozmiar pliku limit filesizelimit filesize kBkB ulimit –fulimit –f kBkB
Maksymalny rozmiar segmentuMaksymalny rozmiar segmentu
danychdanych
limit datasizelimit datasize kBkB ulimit –dulimit –d kBkB
Maksymalny rozmiar stosuMaksymalny rozmiar stosu
procesuprocesu
limit stacksizelimit stacksize kBkB ulimit –sulimit –s kBkB
Maksymalna ilośc pamięciMaksymalna ilośc pamięci
fizycznejfizycznej
limit memorylimit memory kBkB ulimit –mulimit –m kBkB
Maksymalny rozmiar pliku coreMaksymalny rozmiar pliku core limit coredumpsizelimit coredumpsize kBkB ulimit –culimit –c kBkB
Maksymalna ilość procesówMaksymalna ilość procesów (*)(*)
ulimit –uulimit –u kBkB
Maksymalna ilość pamięciMaksymalna ilość pamięci
wirtualnej (*)wirtualnej (*)
ulimit –vulimit –v kBkB
MonitorowanieMonitorowanie procesówprocesów
Do wyświetlania procesów w systemie służy polecenieDo wyświetlania procesów w systemie służy polecenie psps
$ ps$ ps
PID TTY TIME CMDPID TTY TIME CMD
15386 pts/1 0:00 -ksh15386 pts/1 0:00 -ksh
21686 pts/1 0:00 ps21686 pts/1 0:00 ps
$ ps -ef$ ps -ef
UID PID PPID C STIME TTY TIME CMDUID PID PPID C STIME TTY TIME CMD
root 1 0 0 12:25:47 - 0:00 /etc/initroot 1 0 0 12:25:47 - 0:00 /etc/init
root 2452 1 0 12:27:16 - 0:00 /usr/sbin/srcmstrroot 2452 1 0 12:27:16 - 0:00 /usr/sbin/srcmstr
root 2984 4398 0 14:00:07 - 0:00 telnetd -aroot 2984 4398 0 14:00:07 - 0:00 telnetd -a
root 3140 1 0 12:26:39 - 0:02 /usr/sbin/syncd 60root 3140 1 0 12:26:39 - 0:02 /usr/sbin/syncd 60
root 3490 1 0 12:26:40 - 0:00 /usr/lib/errdemonroot 3490 1 0 12:26:40 - 0:00 /usr/lib/errdemon
root 3734 1 0 12:27:49 - 0:00 /usr/sbin/cronroot 3734 1 0 12:27:49 - 0:00 /usr/sbin/cron
root 3958 2452 0 12:27:20 - 0:00 /usr/sbin/syslogdroot 3958 2452 0 12:27:20 - 0:00 /usr/sbin/syslogd
root 4176 2452 0 12:27:23 - 0:00 /usr/sbin/portmaproot 4176 2452 0 12:27:23 - 0:00 /usr/sbin/portmap
root 4398 2452 0 12:27:26 - 0:00 /usr/sbin/inetdroot 4398 2452 0 12:27:26 - 0:00 /usr/sbin/inetd
r4 4738 17158 0 14:58:45 pts/0 0:00 -kshr4 4738 17158 0 14:58:45 pts/0 0:00 -ksh
MonitorowanieMonitorowanie procesówprocesów
Uruchomienie polecenia ps w stylu BSDUruchomienie polecenia ps w stylu BSD
$ ps aux$ ps aux
USER PID %CPU %MEM VSZ RSS TTY STAT START TIME COMMANDUSER PID %CPU %MEM VSZ RSS TTY STAT START TIME COMMAND
oracle 16320 0.0 0.0 1848 844 ? D Jan06 0:01 find / -name *chsid -lsoracle 16320 0.0 0.0 1848 844 ? D Jan06 0:01 find / -name *chsid -ls
oracle 17159 0.0 0.0 1932 872 ? D Jan06 0:00 find / -name libdb.so* -lsoracle 17159 0.0 0.0 1932 872 ? D Jan06 0:00 find / -name libdb.so* -ls
oracle 6252 0.0 0.0 1904 868 ? D Jan15 0:02 find / -name 16opts.gif -lsoracle 6252 0.0 0.0 1904 868 ? D Jan15 0:02 find / -name 16opts.gif -ls
oracle 15745 0.0 0.0 1800 716 ? D Jan16 0:01 find / -name *chsid*oracle 15745 0.0 0.0 1800 716 ? D Jan16 0:01 find / -name *chsid*
root 18012 0.0 0.0 2364 1004 ? S Jan16 0:00 su - oracleroot 18012 0.0 0.0 2364 1004 ? S Jan16 0:00 su - oracle
oracle 18013 0.0 0.1 2564 1404 ? S Jan16 0:00 -bashoracle 18013 0.0 0.1 2564 1404 ? S Jan16 0:00 -bash
oracle 18103 0.0 0.0 1860 844 ? D Jan16 0:01 find / -name *oraenv* -lsoracle 18103 0.0 0.0 1860 844 ? D Jan16 0:01 find / -name *oraenv* -ls
oracle 14675 0.0 0.0 1864 848 ? D Jan22 0:01 find / -name instalacje -lsoracle 14675 0.0 0.0 1864 848 ? D Jan22 0:01 find / -name instalacje -ls
oracle 27183 0.0 0.0 1800 716 ? D Jan23 0:01 find / -name oracleoracle 27183 0.0 0.0 1800 716 ? D Jan23 0:01 find / -name oracle
oracle 29476 0.0 0.0 1728 612 ? D Mar04 0:00 ls --color=tty /archive/dest2/INVoracle 29476 0.0 0.0 1728 612 ? D Mar04 0:00 ls --color=tty /archive/dest2/INV
oracle 29501 0.0 0.1 2856 1700 ? D Mar04 0:00 -bashoracle 29501 0.0 0.1 2856 1700 ? D Mar04 0:00 -bash
oracle 30165 0.0 0.0 1684 536 ? D Mar04 0:00 mv /archive/dest1/INV/archive/dest2/INVoracle 30165 0.0 0.0 1684 536 ? D Mar04 0:00 mv /archive/dest1/INV/archive/dest2/INV
oracle 30262 0.0 0.0 1728 612 ? D Mar04 0:00 ls --color=tty /archive/dest2/INVoracle 30262 0.0 0.0 1728 612 ? D Mar04 0:00 ls --color=tty /archive/dest2/INV
oracle 30272 0.0 0.1 2576 1420 ? D Mar04 0:00 -bashoracle 30272 0.0 0.1 2576 1420 ? D Mar04 0:00 -bash
oracle 7001 0.0 0.5 191508 6080 ? S 00:18 0:00 ora_pmon_INVoracle 7001 0.0 0.5 191508 6080 ? S 00:18 0:00 ora_pmon_INV
oracle 7003 0.0 0.5 191488 5808 ? S 00:18 0:00 ora_dbw0_INVoracle 7003 0.0 0.5 191488 5808 ? S 00:18 0:00 ora_dbw0_INV
oracle 7005 0.0 0.6 190956 6380 ? S 00:18 0:00 ora_lgwr_INVoracle 7005 0.0 0.6 190956 6380 ? S 00:18 0:00 ora_lgwr_INV
oracle 7007 0.0 0.7 190896 7328 ? S 00:18 0:00 ora_ckpt_INVoracle 7007 0.0 0.7 190896 7328 ? S 00:18 0:00 ora_ckpt_INV
oracle 7009 0.0 1.1 190916 11512 ? S 00:18 0:00 ora_smon_INVoracle 7009 0.0 1.1 190916 11512 ? S 00:18 0:00 ora_smon_INV
oracle 7011 0.0 0.7 190872 7492 ? S 00:18 0:00 ora_reco_INVoracle 7011 0.0 0.7 190872 7492 ? S 00:18 0:00 ora_reco_INV
oracle 7015 0.0 0.4 190972 4984 ? S 00:18 0:00 ora_arc0_INVoracle 7015 0.0 0.4 190972 4984 ? S 00:18 0:00 ora_arc0_INV
oracle 7017 0.0 0.4 190944 4848 ? S 00:18 0:00 ora_arc1_INVoracle 7017 0.0 0.4 190944 4848 ? S 00:18 0:00 ora_arc1_INV
MonitorowanieMonitorowanie procesówprocesów – katalog /proc– katalog /proc
 Jest to pseudosystem plików, którego pozycje są obrazamiJest to pseudosystem plików, którego pozycje są obrazami składników pamięci jądraskładników pamięci jądra ii jego strukturjego struktur
danychdanych
 KatalogKatalog /proc/proc zawiera przede wszystkim szereg plików i podkatalogów, których nazwy pochodzązawiera przede wszystkim szereg plików i podkatalogów, których nazwy pochodzą
od identyfikatorówod identyfikatorów PIDPID odpowiednich procesów.odpowiednich procesów.
 W przypadku podkatalogów ich zawartość stanowi kilka plików z informacjami składającymi się naW przypadku podkatalogów ich zawartość stanowi kilka plików z informacjami składającymi się na
jeden konkretny procesjeden konkretny proces
Przykład:Przykład:
#ls /proc/11303#ls /proc/11303
cmdline cwd environ exe fd maps mem root stat statm statuscmdline cwd environ exe fd maps mem root stat statm status
#ls –al /proc/11303#ls –al /proc/11303
dr-xr-xr-x 3 oracle dba 0 Apr 13 08:17 .dr-xr-xr-x 3 oracle dba 0 Apr 13 08:17 .
dr-xr-xr-x 752 root root 0 Dec 18 19:58 ..dr-xr-xr-x 752 root root 0 Dec 18 19:58 ..
-r--r--r-- 1 oracle dba 0 Apr 13 08:18 cmdline-r--r--r-- 1 oracle dba 0 Apr 13 08:18 cmdline
-r--r--r-- 1 oracle dba 0 Apr 13 08:18 cpu-r--r--r-- 1 oracle dba 0 Apr 13 08:18 cpu
lrwxrwxrwx 1 oracle dba 0 Apr 13 08:18 cwd -> /Oracle/app/oracle8i/product/8.1.7/dbslrwxrwxrwx 1 oracle dba 0 Apr 13 08:18 cwd -> /Oracle/app/oracle8i/product/8.1.7/dbs
-r-------- 1 oracle dba 0 Apr 13 08:18 environ-r-------- 1 oracle dba 0 Apr 13 08:18 environ
lrwxrwxrwx 1 oracle dba 0 Apr 13 08:18 exe -> /Oracle/app/oracle8i/product/8.1.7/bin/oraclelrwxrwxrwx 1 oracle dba 0 Apr 13 08:18 exe -> /Oracle/app/oracle8i/product/8.1.7/bin/oracle
dr-x------ 2 oracle dba 0 Apr 13 08:18 fddr-x------ 2 oracle dba 0 Apr 13 08:18 fd
-r--r--r-- 1 oracle dba 0 Apr 13 08:18 maps-r--r--r-- 1 oracle dba 0 Apr 13 08:18 maps
-rw------- 1 oracle dba 0 Apr 13 08:18 mem-rw------- 1 oracle dba 0 Apr 13 08:18 mem
lrwxrwxrwx 1 oracle dba 0 Apr 13 08:18 root -> /lrwxrwxrwx 1 oracle dba 0 Apr 13 08:18 root -> /
-r--r--r-- 1 oracle dba 0 Apr 13 08:18 stat-r--r--r-- 1 oracle dba 0 Apr 13 08:18 stat
-r--r--r-- 1 oracle dba 0 Apr 13 08:18 statm-r--r--r-- 1 oracle dba 0 Apr 13 08:18 statm
-r--r--r-- 1 oracle dba 0 Apr 13 08:18 status-r--r--r-- 1 oracle dba 0 Apr 13 08:18 status
Informacje o procesach zawarte w systemie plików /proc są z reguły dostępne w inny sposób (naInformacje o procesach zawarte w systemie plików /proc są z reguły dostępne w inny sposób (na
przykład za pomocą polecenia ls)przykład za pomocą polecenia ls)
Narzędzia do zarządzania procesamiNarzędzia do zarządzania procesami
Program Top:Program Top:
# top# top
Narzędzia do zarządzania procesamiNarzędzia do zarządzania procesami
Program pstree:Program pstree:
# pstree -a -c -u -G -l –p# pstree -a -c -u -G -l –p
Narzędzia do zarządzania procesamiNarzędzia do zarządzania procesami
Program kill:Program kill:
# kill pid_procesu# kill pid_procesu
# kill -l# kill -l
# kill –SIGKILL pid_procesu# kill –SIGKILL pid_procesu
 PoleceniePolecenie killallkillall zabija wszystkie z tej samej grupy procesów, co proceszabija wszystkie z tej samej grupy procesów, co proces
wywołujący, ale nie jego samego. W efekcie polecenie killall wywołanewywołujący, ale nie jego samego. W efekcie polecenie killall wywołane
przezprzez initinit w ramach procedury wyłączającej system zabije wszystkiew ramach procedury wyłączającej system zabije wszystkie
działające w nim procesy.działające w nim procesy.
 W Linuxie polecenieW Linuxie polecenie killallkillall dopuszcza drugi argument w postacidopuszcza drugi argument w postaci nazwynazwy
poleceniapolecenia. Na przykład polecenie:. Na przykład polecenie:
#killall –KILL find#killall –KILL find
wysyła sygnał KILL do wszystkich procesów wykonujących polecenie findwysyła sygnał KILL do wszystkich procesów wykonujących polecenie find
Zarządzanie CPU procesówZarządzanie CPU procesów
 Chociaż w systemie istnieje wiele procesów, tak naprawdę w danym momencieChociaż w systemie istnieje wiele procesów, tak naprawdę w danym momencie
jest wykonywanyjest wykonywany tylko jedentylko jeden..
 Proces po rozpoczęciu wykonywania trwa aż do momentu, gdy musi dokonaćProces po rozpoczęciu wykonywania trwa aż do momentu, gdy musi dokonać
operacji we/wy, otrzyma przerwanie od jądra albo też wyczerpie cały odcinekoperacji we/wy, otrzyma przerwanie od jądra albo też wyczerpie cały odcinek
(inaczej(inaczej kwant czasukwant czasu).).
 Nowoprzetwarzanym jest proces z kolejki, który jestNowoprzetwarzanym jest proces z kolejki, który jest najbardziejnajbardziej
uprzywilejowanyuprzywilejowany. Zmiana aktualnie wykonywanego procesu jest nazywana. Zmiana aktualnie wykonywanego procesu jest nazywana
przełączeniem kontekstuprzełączeniem kontekstu
 Procesy gotowe do wykonania są ustawiane wProcesy gotowe do wykonania są ustawiane w kolejcekolejce.. ZarządcaZarządca zawszezawsze
wybiera z kolejki proces owybiera z kolejki proces o najniższym priorytecienajniższym priorytecie..
 Z każdym procesem są skojarzone dwa priorytety:Z każdym procesem są skojarzone dwa priorytety:
 Liczba niceLiczba nice – pożądany priorytet do wykonania względem pozostałych procesów– pożądany priorytet do wykonania względem pozostałych procesów
(kolumna NI po uruchomieniu ps –l)(kolumna NI po uruchomieniu ps –l)
 Aktualny priorytet wykonaniaAktualny priorytet wykonania, który jest wyliczany dynamicznie i aktualizowany, który jest wyliczany dynamicznie i aktualizowany
przez SO. (kolumna PRI po uruchomieniu ps –l)przez SO. (kolumna PRI po uruchomieniu ps –l)
Zarządzanie CPU procesówZarządzanie CPU procesów
 W systemie Linux liczby nice mają wartości odW systemie Linux liczby nice mają wartości od -20-20 dodo 2020 (domyślnie(domyślnie 00).).
Najbardziej uprzywilejowana jestNajbardziej uprzywilejowana jest -20-20
 Specjalna liczba nice –Specjalna liczba nice – 2020 oznacza, że proces ma być wykonywany tylkooznacza, że proces ma być wykonywany tylko
wtedy, gdy żaden inny proces nie potrzebuje CPUwtedy, gdy żaden inny proces nie potrzebuje CPU
 Każdy użytkownik może być „miły” i zmniejszyć obciążenie procesoraKażdy użytkownik może być „miły” i zmniejszyć obciążenie procesora
poprzez zwiększenie liczby nice swoich procesów.poprzez zwiększenie liczby nice swoich procesów.
 Zmniejszenie liczby nice dla procesów może dokonać tylko root.Zmniejszenie liczby nice dla procesów może dokonać tylko root.
 Sposoby ustalania priorytetu zadania:Sposoby ustalania priorytetu zadania:
nice [+|- n] polecenie, na przykład:nice [+|- n] polecenie, na przykład:
#nice –n +5 find / -perm +2000 –name ‘*.*’ –ls& (zwiększenie liczby nice do#nice –n +5 find / -perm +2000 –name ‘*.*’ –ls& (zwiększenie liczby nice do
5)5)
#nice –n -10 find / -perm +4000 -print& (obniżenie liczby nice do -10).#nice –n -10 find / -perm +4000 -print& (obniżenie liczby nice do -10).
Zarządzanie CPU procesówZarządzanie CPU procesów
 Zmiana liczby nice procesówZmiana liczby nice procesów
 Gdy system jest bardzo obciążony może zaistnieć potrzebaGdy system jest bardzo obciążony może zaistnieć potrzeba
zmiany priorytetów niektórym procesomzmiany priorytetów niektórym procesom
 Składnia polecenia renice:Składnia polecenia renice: renice nowa_liczba_nice pidrenice nowa_liczba_nice pid
 Tylko root może zmniejszyć liczbę nice działającym procesomTylko root może zmniejszyć liczbę nice działającym procesom
Przykłady:Przykłady:
#renice 10 1264#renice 10 1264
#renice -15 1564#renice -15 1564
Monitorowanie wykorzystania CPUMonitorowanie wykorzystania CPU
 Jest wiele sposobów uzyskania ogólnego obrazu aktywności CPU. PrzykłademJest wiele sposobów uzyskania ogólnego obrazu aktywności CPU. Przykładem
narzędzia, któremożna do tego wykorzystać jest vmstat. Składnia jego użycia tonarzędzia, któremożna do tego wykorzystać jest vmstat. Składnia jego użycia to
vmstat interwał [licznik]vmstat interwał [licznik]
 Przykład:Przykład:
#vmstat 5 4#vmstat 5 4
 Pierwsza linia podaje średnią dla systemu od początku jego uruchomieniaPierwsza linia podaje średnią dla systemu od początku jego uruchomienia
rr Liczba działających procesów oczekujących w kolejce na wykonanieLiczba działających procesów oczekujących w kolejce na wykonanie
cscs Liczba przełączeń kontekstuLiczba przełączeń kontekstu
usus Procent cyklów CPU spędzonych w trybie użytkownikaProcent cyklów CPU spędzonych w trybie użytkownika
sysy Procent cyklów CPU spędzonych w trybie systemu, zarówno w celu obsługiProcent cyklów CPU spędzonych w trybie systemu, zarówno w celu obsługi
programów użytkowników, jak i wykonywania zadań ogólnosystemowychprogramów użytkowników, jak i wykonywania zadań ogólnosystemowych
idid Czas bezczynności: procent niewykorzystanych cyklów CPU w czasieCzas bezczynności: procent niewykorzystanych cyklów CPU w czasie
interwałuinterwału
DziękujęDziękuję

More Related Content

Similar to LinuxKurs_Lekcja05

CodiLime Tech Talk - Michał Cłapiński, Mateusz Jabłoński: Debugging faultily ...
CodiLime Tech Talk - Michał Cłapiński, Mateusz Jabłoński: Debugging faultily ...CodiLime Tech Talk - Michał Cłapiński, Mateusz Jabłoński: Debugging faultily ...
CodiLime Tech Talk - Michał Cłapiński, Mateusz Jabłoński: Debugging faultily ...CodiLime
 
Zwiększanie produktywności programisty php (v2)
Zwiększanie produktywności programisty php (v2)Zwiększanie produktywności programisty php (v2)
Zwiększanie produktywności programisty php (v2)adamhmetal
 
Zwiększanie produktywności programisty php
Zwiększanie produktywności programisty phpZwiększanie produktywności programisty php
Zwiększanie produktywności programisty phpadamhmetal
 
Linux. Bezpieczeństwo. Receptury
Linux. Bezpieczeństwo. RecepturyLinux. Bezpieczeństwo. Receptury
Linux. Bezpieczeństwo. RecepturyWydawnictwo Helion
 
Porażka nie wchodzi w grę, czyli o niezawodności
Porażka nie wchodzi w grę, czyli o niezawodnościPorażka nie wchodzi w grę, czyli o niezawodności
Porażka nie wchodzi w grę, czyli o niezawodnościKamil Grabowski
 
Django od developerki po produkcję (linux)
Django od developerki po produkcję (linux)Django od developerki po produkcję (linux)
Django od developerki po produkcję (linux)Marcin Grzybowski
 
Asynchroniczny PHP i komunikacja czasu rzeczywistego z wykorzystaniem websocketw
Asynchroniczny PHP i komunikacja czasu rzeczywistego z wykorzystaniem websocketwAsynchroniczny PHP i komunikacja czasu rzeczywistego z wykorzystaniem websocketw
Asynchroniczny PHP i komunikacja czasu rzeczywistego z wykorzystaniem websocketwLuke Adamczewski
 
Asynchroniczny PHP & komunikacja czasu rzeczywistego z wykorzystaniem websock...
Asynchroniczny PHP & komunikacja czasu rzeczywistego z wykorzystaniem websock...Asynchroniczny PHP & komunikacja czasu rzeczywistego z wykorzystaniem websock...
Asynchroniczny PHP & komunikacja czasu rzeczywistego z wykorzystaniem websock...Polcode
 
Sekrety magicznego ogrodu Docker
Sekrety magicznego ogrodu DockerSekrety magicznego ogrodu Docker
Sekrety magicznego ogrodu DockerKamil Grabowski
 
Exam: 70-511 Enhancing Usability - Windows Application
Exam: 70-511 Enhancing Usability - Windows ApplicationExam: 70-511 Enhancing Usability - Windows Application
Exam: 70-511 Enhancing Usability - Windows ApplicationMaciej Zbrzezny
 
Shall we play a game? PL version
Shall we play a game? PL versionShall we play a game? PL version
Shall we play a game? PL versionMaciej Lasyk
 
Poznańska grupa .Net spotkanie VI - Test Driven Development
Poznańska grupa .Net spotkanie VI - Test Driven DevelopmentPoznańska grupa .Net spotkanie VI - Test Driven Development
Poznańska grupa .Net spotkanie VI - Test Driven Developmentbartlomiej.szafko
 
SELinux, czyli zero-zero-day exploits - DWO 2013
SELinux, czyli zero-zero-day exploits - DWO 2013SELinux, czyli zero-zero-day exploits - DWO 2013
SELinux, czyli zero-zero-day exploits - DWO 2013Adam Przybyła
 
Procesy
ProcesyProcesy
Procesyraphau
 
Integracja środowiska testowego z użyciem Robot Framework, TrojQA 2014-12-16
Integracja środowiska testowego z użyciem Robot Framework, TrojQA 2014-12-16Integracja środowiska testowego z użyciem Robot Framework, TrojQA 2014-12-16
Integracja środowiska testowego z użyciem Robot Framework, TrojQA 2014-12-16Krzysztof Synak
 

Similar to LinuxKurs_Lekcja05 (20)

CodiLime Tech Talk - Michał Cłapiński, Mateusz Jabłoński: Debugging faultily ...
CodiLime Tech Talk - Michał Cłapiński, Mateusz Jabłoński: Debugging faultily ...CodiLime Tech Talk - Michał Cłapiński, Mateusz Jabłoński: Debugging faultily ...
CodiLime Tech Talk - Michał Cłapiński, Mateusz Jabłoński: Debugging faultily ...
 
Slackware Linux. Ćwiczenia
Slackware Linux. ĆwiczeniaSlackware Linux. Ćwiczenia
Slackware Linux. Ćwiczenia
 
Zwiększanie produktywności programisty php (v2)
Zwiększanie produktywności programisty php (v2)Zwiększanie produktywności programisty php (v2)
Zwiększanie produktywności programisty php (v2)
 
Zwiększanie produktywności programisty php
Zwiększanie produktywności programisty phpZwiększanie produktywności programisty php
Zwiększanie produktywności programisty php
 
Ansible w praktyce
Ansible w praktyceAnsible w praktyce
Ansible w praktyce
 
Linux. Bezpieczeństwo. Receptury
Linux. Bezpieczeństwo. RecepturyLinux. Bezpieczeństwo. Receptury
Linux. Bezpieczeństwo. Receptury
 
Porażka nie wchodzi w grę, czyli o niezawodności
Porażka nie wchodzi w grę, czyli o niezawodnościPorażka nie wchodzi w grę, czyli o niezawodności
Porażka nie wchodzi w grę, czyli o niezawodności
 
Django od developerki po produkcję (linux)
Django od developerki po produkcję (linux)Django od developerki po produkcję (linux)
Django od developerki po produkcję (linux)
 
Asynchroniczny PHP i komunikacja czasu rzeczywistego z wykorzystaniem websocketw
Asynchroniczny PHP i komunikacja czasu rzeczywistego z wykorzystaniem websocketwAsynchroniczny PHP i komunikacja czasu rzeczywistego z wykorzystaniem websocketw
Asynchroniczny PHP i komunikacja czasu rzeczywistego z wykorzystaniem websocketw
 
Asynchroniczny PHP & komunikacja czasu rzeczywistego z wykorzystaniem websock...
Asynchroniczny PHP & komunikacja czasu rzeczywistego z wykorzystaniem websock...Asynchroniczny PHP & komunikacja czasu rzeczywistego z wykorzystaniem websock...
Asynchroniczny PHP & komunikacja czasu rzeczywistego z wykorzystaniem websock...
 
Sekrety magicznego ogrodu Docker
Sekrety magicznego ogrodu DockerSekrety magicznego ogrodu Docker
Sekrety magicznego ogrodu Docker
 
Exam: 70-511 Enhancing Usability - Windows Application
Exam: 70-511 Enhancing Usability - Windows ApplicationExam: 70-511 Enhancing Usability - Windows Application
Exam: 70-511 Enhancing Usability - Windows Application
 
Shall we play a game? PL version
Shall we play a game? PL versionShall we play a game? PL version
Shall we play a game? PL version
 
Jest Git!
Jest Git!Jest Git!
Jest Git!
 
Poznańska grupa .Net spotkanie VI - Test Driven Development
Poznańska grupa .Net spotkanie VI - Test Driven DevelopmentPoznańska grupa .Net spotkanie VI - Test Driven Development
Poznańska grupa .Net spotkanie VI - Test Driven Development
 
SELinux, czyli zero-zero-day exploits - DWO 2013
SELinux, czyli zero-zero-day exploits - DWO 2013SELinux, czyli zero-zero-day exploits - DWO 2013
SELinux, czyli zero-zero-day exploits - DWO 2013
 
Wprowadzenie do PHPUnit
Wprowadzenie do PHPUnitWprowadzenie do PHPUnit
Wprowadzenie do PHPUnit
 
university day 1
university day 1university day 1
university day 1
 
Procesy
ProcesyProcesy
Procesy
 
Integracja środowiska testowego z użyciem Robot Framework, TrojQA 2014-12-16
Integracja środowiska testowego z użyciem Robot Framework, TrojQA 2014-12-16Integracja środowiska testowego z użyciem Robot Framework, TrojQA 2014-12-16
Integracja środowiska testowego z użyciem Robot Framework, TrojQA 2014-12-16
 

LinuxKurs_Lekcja05

  • 1. Lekcja 5Lekcja 5 Zarządzanie procesamiZarządzanie procesami
  • 2. CeleCele Po zakończeniu tej lekcji dowiesz się:Po zakończeniu tej lekcji dowiesz się:  Czym jest proces w systemie LinuxCzym jest proces w systemie Linux  W jaki sposób są uruchamiane procesyW jaki sposób są uruchamiane procesy  Jak można kończyć procesyJak można kończyć procesy  W jaki sposób zarządzać procesamiW jaki sposób zarządzać procesami
  • 3. ProcesyProcesy  ProcesProces jest to pojedynczy program wykonujący się we własnejjest to pojedynczy program wykonujący się we własnej przestrzeni adresowej.przestrzeni adresowej.  Różnica pomiędzyRóżnica pomiędzy procesemprocesem aa zadaniemzadaniem czyczy poleceniempoleceniem polega na tym, że te ostatnie mogą składać się z wielu procesówpolega na tym, że te ostatnie mogą składać się z wielu procesów realizujących określoną czynność.realizujących określoną czynność.  Proste polecenia jak np.Proste polecenia jak np. lsls wykonują się jakowykonują się jako jeden procesjeden proces  W systemach UNIX zarządzanie przydziałem czasu procesoraW systemach UNIX zarządzanie przydziałem czasu procesora (CPU) w dużej mierze odbywa się przez(CPU) w dużej mierze odbywa się przez kontrolę procesówkontrolę procesów..
  • 4. Cykl życia procesuCykl życia procesu  Istniejący proces robi dokładną kopię samegoIstniejący proces robi dokładną kopię samego siebie –siebie – rozwidlenierozwidlenie ((forkingforking))  Nowy proces to tzw.Nowy proces to tzw. proces potomnyproces potomny ((childchild processprocess) dziedziczy takie samo środowisko jak) dziedziczy takie samo środowisko jak proces macierzystyproces macierzysty ((parent processparent process), ale ma inny), ale ma inny identyfikator procesu (identyfikator procesu (PIDPID))  Obraz w przestrzeni adresowej procesuObraz w przestrzeni adresowej procesu potomnego zostaje nadpisany przez procespotomnego zostaje nadpisany przez proces uruchomiony przez proces potomny za pomocąuruchomiony przez proces potomny za pomocą wywołania systemowegowywołania systemowego execexec (stąd określenie(stąd określenie fork-and-execfork-and-exec). Nowy program (lub polecenie)). Nowy program (lub polecenie) całkowicie zastępuję proces będący duplikatemcałkowicie zastępuję proces będący duplikatem macierzystego. Środowisko procesu jest takiemacierzystego. Środowisko procesu jest takie samo.samo. initinit initinit gettygetty loginlogin shsh rozwidlanierozwidlanie wykonywanie wykonywanie wykonywanie initinit Nadalsięwykonuje PID 1 PID 1 PID 424 PID 424 PID 424 PID 424 rozwidlanierozwidlanie shsh grepgrep wykonywanie PID 563 PID 563
  • 5. Tryb dostępu SETUID i SETGIDTryb dostępu SETUID i SETGID a wykonanie procesówa wykonanie procesów  Umożliwiają zwykłym użytkownikom wykonywanie zadań, które wymagająUmożliwiają zwykłym użytkownikom wykonywanie zadań, które wymagają specjalnych przywilejów systemowychspecjalnych przywilejów systemowych  Przykładowo poleceniePrzykładowo polecenie writewrite (pozwalające na pisanie na wyjście standardowe(pozwalające na pisanie na wyjście standardowe terminali innych użytkowników) w wielu systemach należy do grupyterminali innych użytkowników) w wielu systemach należy do grupy ttytty  Do grupy tty należą też wszystkie pliki urządzeń terminali i pseudoterminali.Do grupy tty należą też wszystkie pliki urządzeń terminali i pseudoterminali.  PoleceniePolecenie writewrite ma ustawiony bitma ustawiony bit SGIDSGID, który powoduje, że wykonanie go przez, który powoduje, że wykonanie go przez dowolnego użytkownika, skutkuje wykonaniem go z prawami grupydowolnego użytkownika, skutkuje wykonaniem go z prawami grupy ttytty, a co za tym, a co za tym idzie pozwala na zapis do innych plików terminali, czyli przekazywanie wiadomościidzie pozwala na zapis do innych plików terminali, czyli przekazywanie wiadomości tekstowych do innych użytkowników.tekstowych do innych użytkowników.  UWAGA!!! Ustawianie bitówUWAGA!!! Ustawianie bitów SUIDSUID ii SGIDSGID powoduje zagrożenie bezpieczeństwa wpowoduje zagrożenie bezpieczeństwa w systemie Linux i należy go używać z należytą uwagą.systemie Linux i należy go używać z należytą uwagą.
  • 6. Procesy c.d.Procesy c.d. Typy procesówTypy procesów Procesy interakcyjneProcesy interakcyjne  Zainicjowane w trakcie sesji rozpoczętej na terminalu i w ramach tej sesjiZainicjowane w trakcie sesji rozpoczętej na terminalu i w ramach tej sesji kontrolowanekontrolowane  Mogą się wykonywać jako:Mogą się wykonywać jako:  procesy pierwszoplanoweprocesy pierwszoplanowe - przez cały czas trwania pozostają związane z- przez cały czas trwania pozostają związane z terminalem. Na przykład wpisując uniksowe polecenie i czekając na efekty jegoterminalem. Na przykład wpisując uniksowe polecenie i czekając na efekty jego działania wyświetlane na standardowym wyjściu wykonujemy procesdziałania wyświetlane na standardowym wyjściu wykonujemy proces pierwszoplanowy. Można je przerywać za pomocą kombinacji CTRL+Cpierwszoplanowy. Można je przerywać za pomocą kombinacji CTRL+C  procesy tłaprocesy tła – są wykonywane w tle i mogą ale nie muszą być związane z– są wykonywane w tle i mogą ale nie muszą być związane z terminalem. Są uruchamiane zterminalem. Są uruchamiane z && na końcuna końcu Np.:Np.: $ find –perm +2000 –o –perm +4000 –ls > /tmp/lista &$ find –perm +2000 –o –perm +4000 –ls > /tmp/lista & [1] 7093[1] 7093 [1]+ Done find –perm +2000 –o –perm +4000 –ls > /tmp/lista[1]+ Done find –perm +2000 –o –perm +4000 –ls > /tmp/lista
  • 7. Procesy c.d.Procesy c.d. Kontrola procesów – Uniksowa kontrola zadańKontrola procesów – Uniksowa kontrola zadań PoleceniePolecenie ZnaczenieZnaczenie PrzykładPrzykład && Uruchomienie procesu w tleUruchomienie procesu w tle $ polecenie &$ polecenie & ^Z^Z Zatrzymanie procesu pierwszoplanowegoZatrzymanie procesu pierwszoplanowego $ ^Z$ ^Z StoppedStopped jobsjobs Wyświetlenie listy procesów tłaWyświetlenie listy procesów tła $ jobs$ jobs [1] – Stopped vi[1] – Stopped vi [2] – zadanie1 &[2] – zadanie1 & [3] + stopped zadanie2[3] + stopped zadanie2 %n%n Odwołanie się do procesu tła o numerze nOdwołanie się do procesu tła o numerze n fgfg Uczynienie procesu tła procesem pierwszoplanowymUczynienie procesu tła procesem pierwszoplanowym $ fg %1$ fg %1 bgbg Uruchomienie zatrzymanego procesuUruchomienie zatrzymanego procesu $ bg %1$ bg %1 %?str%?str Odwołanie się do tego procesu tła, którego polecenieOdwołanie się do tego procesu tła, którego polecenie uruchamiające zawierauruchamiające zawiera strstr $ fg %?v$ fg %?v killkill Wbudowana w shella wersja unixowego polecenia killWbudowana w shella wersja unixowego polecenia kill służąca do zabijania procesówsłużąca do zabijania procesów $ kill %2$ kill %2
  • 8. Procesy c.d.Procesy c.d.  Procesy uruchamiane przez użytkowników po zakończeniuProcesy uruchamiane przez użytkowników po zakończeniu sesji terminalowej są automatycznie kończone.sesji terminalowej są automatycznie kończone.  Aby proces po odłączeniu się użytkownika od serwera działałAby proces po odłączeniu się użytkownika od serwera działał w dalszym ciągu należy skorzystać z polecenia nohup.w dalszym ciągu należy skorzystać z polecenia nohup. # nuhup polecenie &# nuhup polecenie &
  • 9. Procesy c.d.Procesy c.d. Procesy kolejkowaneProcesy kolejkowane  Nie związane z żadnym terminalemNie związane z żadnym terminalem  Kierowane do odpowiednich kolejekKierowane do odpowiednich kolejek  Uruchamiane sekwencyjnieUruchamiane sekwencyjnie  PoleceniePolecenie batchbatch  Przykład:Przykład: $ batch <<!$ batch <<! longjoblongjob !! DemonyDemony  Procesy inicjowane zwykle w czasie startu systemuProcesy inicjowane zwykle w czasie startu systemu  Procesy o charakterze usługowym, np.. Serwer WWW, baza danych, serwer NEWS,Procesy o charakterze usługowym, np.. Serwer WWW, baza danych, serwer NEWS, server NNTP, serwer PROXY, itd….server NNTP, serwer PROXY, itd….  Wykonywane w tle, oczekują na zlecenia wydawane przez inne procesyWykonywane w tle, oczekują na zlecenia wydawane przez inne procesy
  • 10. Procesy – c.d.Procesy – c.d. Ważniejsze demony LinuksaWażniejsze demony Linuksa Element funkcjonalnyElement funkcjonalny OpisOpis Nazwy demonówNazwy demonów initinit Proces, który zostajeProces, który zostaje uruchomiony jako pierwszyuruchomiony jako pierwszy initinit syslogsyslog Stan systemu, rejestrowanieStan systemu, rejestrowanie komunikatów o błędziekomunikatów o błędzie syslogdsyslogd emailemail Transport wiadomościTransport wiadomości pocztowychpocztowych sendmail, qmailsendmail, qmail drukowaniedrukowanie Bufor wydrukuBufor wydruku lpd, cupsdlpd, cupsd croncron Periodyczne wykonywaniePeriodyczne wykonywanie procesówprocesów crondcrond ttytty Obsługa terminalaObsługa terminala getty,getty, syncsync Spłukiwanie bufora dyskuSpłukiwanie bufora dysku bdflushbdflush stronicowanie i wymianastronicowanie i wymiana Demony obsługująceDemony obsługujące zarządzanie pamięciązarządzanie pamięcią wirtualnąwirtualną kswapdkswapd
  • 11. Procesy – c.d.Procesy – c.d. Element funkcjonalnyElement funkcjonalny OpisOpis Nazwy demonówNazwy demonów InetdInetd Nadrzędny demon TCP/IPNadrzędny demon TCP/IP odpowiedzialny za uruchamianieodpowiedzialny za uruchamianie wielu innych na żądaniewielu innych na żądanie inetd, xinetdinetd, xinetd Rozwiązywanie nazwRozwiązywanie nazw Proces serwera DNSProces serwera DNS namednamed RutowanieRutowanie Demon rutowaniaDemon rutowania routed, gatedrouted, gated DHCPDHCP Dynamiczne konfigurowanie klientaDynamiczne konfigurowanie klienta siecisieci dhcpddhcpd RCPRCP Mapowanie usługi na port sieciowyMapowanie usługi na port sieciowy dla narzędzia do zdalnegodla narzędzia do zdalnego wywoływania procedurwywoływania procedur portmap, rcpbindportmap, rcpbind NFSNFS System plików sieciowych NFSSystem plików sieciowych NFS nfsdnfsd SambaSamba Współdzielenie plików/drukarek zWspółdzielenie plików/drukarek z WindowsWindows smbd, nmbdsmbd, nmbd WWWWWW Serwer HTTPSerwer HTTP httpdhttpd Ważniejsze demony Linuksa – c.d.Ważniejsze demony Linuksa – c.d.
  • 12. AtrybutyAtrybuty procesuprocesu Z każdym procesem wykonywanym w LINUX-ie związanych jest wiele atrybutówZ każdym procesem wykonywanym w LINUX-ie związanych jest wiele atrybutów  Identyfikator procesuIdentyfikator procesu ((PIDPID,, Process IDProcess ID)) – numer jednoznacznie identyfikujący proces– numer jednoznacznie identyfikujący proces  Identyfikator rodzica procesuIdentyfikator rodzica procesu ((PPIDPPID,, Parent Process IDParent Process ID)) – identyfikator PID procesu– identyfikator PID procesu będącego rodzicem danego procesubędącego rodzicem danego procesu  LiczbaLiczba nicenice – wyznacza „ważność” danego procesu w stosunku do innych procesów w– wyznacza „ważność” danego procesu w stosunku do innych procesów w systemie. (UWAGA! Nie należy jej mylić z aktualnym priorytetem procesu wyliczanymsystemie. (UWAGA! Nie należy jej mylić z aktualnym priorytetem procesu wyliczanym dynamicznie na podstawie liczby nice oraz zużycia zasobów CPU przez dany proces)dynamicznie na podstawie liczby nice oraz zużycia zasobów CPU przez dany proces)  TTYTTY – urządzenie reprezentujące terminal kontrolny (bądź pseudoterminal) z którym– urządzenie reprezentujące terminal kontrolny (bądź pseudoterminal) z którym związany jest dany proceszwiązany jest dany proces  RUIDRUID,, EUIDEUID – rzeczywisty i efektywny identyfikator użytkownika– rzeczywisty i efektywny identyfikator użytkownika  RGIDRGID,, EGIDEGID – rzeczywisty i efektywny identyfikator grupy– rzeczywisty i efektywny identyfikator grupy  %MEM%MEM – ilość zajmowanej prze proces procentowo pamięci– ilość zajmowanej prze proces procentowo pamięci  STATSTAT – status procesu (S- sleeping, R-running, W-waiting)– status procesu (S- sleeping, R-running, W-waiting)  %CPU%CPU – ilość zajmowanego procentowo czasu CPU– ilość zajmowanego procentowo czasu CPU
  • 13. Monitorowanie procesówMonitorowanie procesów  Linux pozwala monitorować, oraz w ograniczonym zakresie ustalaćLinux pozwala monitorować, oraz w ograniczonym zakresie ustalać priorytety wykonaniapriorytety wykonania  Zgrubne oszacowanie obciążenia systemu jest możliwe za pomocąZgrubne oszacowanie obciążenia systemu jest możliwe za pomocą polecenia:polecenia: uptimeuptime #uptime#uptime 3:24pm up 2 days, 2:41, 16 users, load average: 1.90, 1.43, 1.333:24pm up 2 days, 2:41, 16 users, load average: 1.90, 1.43, 1.33  Gdzie ostatnie trzy liczby podają średnią liczbę aktywnych procesów wGdzie ostatnie trzy liczby podają średnią liczbę aktywnych procesów w ciągu ostatniej minuty, ostatnich pięciu minut i ostatnich piętnastu minut.ciągu ostatniej minuty, ostatnich pięciu minut i ostatnich piętnastu minut.
  • 14. Limity zasobów procesuLimity zasobów procesu  Linux stosuje bardzo prosty schemat limitów zasobów. Lista ograniczeń, któreLinux stosuje bardzo prosty schemat limitów zasobów. Lista ograniczeń, które można nakładać na procesy obejmuje:można nakładać na procesy obejmuje:  całkowity skumulowany czas CPUcałkowity skumulowany czas CPU  największy plik, jaki można utworzyć (zarówno od nowa, jak i wydłużając istniejący)największy plik, jaki można utworzyć (zarówno od nowa, jak i wydłużając istniejący)  maksymalny rozmiar segmentu danych procesumaksymalny rozmiar segmentu danych procesu  maksymalny rozmiar segmentu stosu procesumaksymalny rozmiar segmentu stosu procesu  maksymalny rozmiar plikumaksymalny rozmiar pliku corecore (zrzut pamięci procesu tworzonego na skutek pewnych(zrzut pamięci procesu tworzonego na skutek pewnych błędów)błędów)  maksymalna ilość pamięci dostępnej dla procesumaksymalna ilość pamięci dostępnej dla procesu  Limity zasobów można podzielić na dwie kategorie:Limity zasobów można podzielić na dwie kategorie:  słabe (soft) – ograniczenia nakładane standardowo na proces w momencie jegosłabe (soft) – ograniczenia nakładane standardowo na proces w momencie jego tworzenia. Można je zwiększać do wartości ogólnosystemowychtworzenia. Można je zwiększać do wartości ogólnosystemowych sztywnych limitów.sztywnych limitów. Powyżej tych sztywnych limitów zmiana limitów dla danego procesu jest możliwa tylkoPowyżej tych sztywnych limitów zmiana limitów dla danego procesu jest możliwa tylko przez użytkownika rootprzez użytkownika root  sztywne (hard)sztywne (hard)
  • 15. Limity zasobów procesuLimity zasobów procesu  Do wyświetlania aktualnych limitów w systemie służy polecenieDo wyświetlania aktualnych limitów w systemie służy polecenie ulimitulimit.. OpcjeOpcje –a–a ii -Ha-Ha wyświetlają odpowiednio słabe i sztywne limity:wyświetlają odpowiednio słabe i sztywne limity: #ulimit –a#ulimit –a cputimecputime 1:00:001:00:00 filesizefilesize 1048575 kbytes1048575 kbytes datasizedatasize 65536 kbytes65536 kbytes stacksizestacksize 4096 kbytes4096 kbytes coredumpsizecoredumpsize 1024 kbytes1024 kbytes memoryusememoryuse 32768 kbytes32768 kbytes #ulimit –Ha#ulimit –Ha cputimecputime unlimitedunlimited filesizefilesize unlimitedunlimited datasizedatasize 3686336 kbytes3686336 kbytes stacksizestacksize 262144 kbytes262144 kbytes coredumpsizecoredumpsize unlimitedunlimited memoryusememoryuse 54528 kbytes54528 kbytes
  • 16. Limity zasobów procesuLimity zasobów procesu  Ustawianie limitów poszczególnych zasobów. Zazwyczaj umieszcza się je w plikachUstawianie limitów poszczególnych zasobów. Zazwyczaj umieszcza się je w plikach inicjujących sesjęinicjujących sesję ZasóbZasób csh i tcshcsh i tcsh bash i kshbash i ksh Czas CPUCzas CPU limit cputimelimit cputime sekundysekundy ulimit –tulimit –t sekundysekundy Maksymalny rozmiar plikuMaksymalny rozmiar pliku limit filesizelimit filesize kBkB ulimit –fulimit –f kBkB Maksymalny rozmiar segmentuMaksymalny rozmiar segmentu danychdanych limit datasizelimit datasize kBkB ulimit –dulimit –d kBkB Maksymalny rozmiar stosuMaksymalny rozmiar stosu procesuprocesu limit stacksizelimit stacksize kBkB ulimit –sulimit –s kBkB Maksymalna ilośc pamięciMaksymalna ilośc pamięci fizycznejfizycznej limit memorylimit memory kBkB ulimit –mulimit –m kBkB Maksymalny rozmiar pliku coreMaksymalny rozmiar pliku core limit coredumpsizelimit coredumpsize kBkB ulimit –culimit –c kBkB Maksymalna ilość procesówMaksymalna ilość procesów (*)(*) ulimit –uulimit –u kBkB Maksymalna ilość pamięciMaksymalna ilość pamięci wirtualnej (*)wirtualnej (*) ulimit –vulimit –v kBkB
  • 17. MonitorowanieMonitorowanie procesówprocesów Do wyświetlania procesów w systemie służy polecenieDo wyświetlania procesów w systemie służy polecenie psps $ ps$ ps PID TTY TIME CMDPID TTY TIME CMD 15386 pts/1 0:00 -ksh15386 pts/1 0:00 -ksh 21686 pts/1 0:00 ps21686 pts/1 0:00 ps $ ps -ef$ ps -ef UID PID PPID C STIME TTY TIME CMDUID PID PPID C STIME TTY TIME CMD root 1 0 0 12:25:47 - 0:00 /etc/initroot 1 0 0 12:25:47 - 0:00 /etc/init root 2452 1 0 12:27:16 - 0:00 /usr/sbin/srcmstrroot 2452 1 0 12:27:16 - 0:00 /usr/sbin/srcmstr root 2984 4398 0 14:00:07 - 0:00 telnetd -aroot 2984 4398 0 14:00:07 - 0:00 telnetd -a root 3140 1 0 12:26:39 - 0:02 /usr/sbin/syncd 60root 3140 1 0 12:26:39 - 0:02 /usr/sbin/syncd 60 root 3490 1 0 12:26:40 - 0:00 /usr/lib/errdemonroot 3490 1 0 12:26:40 - 0:00 /usr/lib/errdemon root 3734 1 0 12:27:49 - 0:00 /usr/sbin/cronroot 3734 1 0 12:27:49 - 0:00 /usr/sbin/cron root 3958 2452 0 12:27:20 - 0:00 /usr/sbin/syslogdroot 3958 2452 0 12:27:20 - 0:00 /usr/sbin/syslogd root 4176 2452 0 12:27:23 - 0:00 /usr/sbin/portmaproot 4176 2452 0 12:27:23 - 0:00 /usr/sbin/portmap root 4398 2452 0 12:27:26 - 0:00 /usr/sbin/inetdroot 4398 2452 0 12:27:26 - 0:00 /usr/sbin/inetd r4 4738 17158 0 14:58:45 pts/0 0:00 -kshr4 4738 17158 0 14:58:45 pts/0 0:00 -ksh
  • 18. MonitorowanieMonitorowanie procesówprocesów Uruchomienie polecenia ps w stylu BSDUruchomienie polecenia ps w stylu BSD $ ps aux$ ps aux USER PID %CPU %MEM VSZ RSS TTY STAT START TIME COMMANDUSER PID %CPU %MEM VSZ RSS TTY STAT START TIME COMMAND oracle 16320 0.0 0.0 1848 844 ? D Jan06 0:01 find / -name *chsid -lsoracle 16320 0.0 0.0 1848 844 ? D Jan06 0:01 find / -name *chsid -ls oracle 17159 0.0 0.0 1932 872 ? D Jan06 0:00 find / -name libdb.so* -lsoracle 17159 0.0 0.0 1932 872 ? D Jan06 0:00 find / -name libdb.so* -ls oracle 6252 0.0 0.0 1904 868 ? D Jan15 0:02 find / -name 16opts.gif -lsoracle 6252 0.0 0.0 1904 868 ? D Jan15 0:02 find / -name 16opts.gif -ls oracle 15745 0.0 0.0 1800 716 ? D Jan16 0:01 find / -name *chsid*oracle 15745 0.0 0.0 1800 716 ? D Jan16 0:01 find / -name *chsid* root 18012 0.0 0.0 2364 1004 ? S Jan16 0:00 su - oracleroot 18012 0.0 0.0 2364 1004 ? S Jan16 0:00 su - oracle oracle 18013 0.0 0.1 2564 1404 ? S Jan16 0:00 -bashoracle 18013 0.0 0.1 2564 1404 ? S Jan16 0:00 -bash oracle 18103 0.0 0.0 1860 844 ? D Jan16 0:01 find / -name *oraenv* -lsoracle 18103 0.0 0.0 1860 844 ? D Jan16 0:01 find / -name *oraenv* -ls oracle 14675 0.0 0.0 1864 848 ? D Jan22 0:01 find / -name instalacje -lsoracle 14675 0.0 0.0 1864 848 ? D Jan22 0:01 find / -name instalacje -ls oracle 27183 0.0 0.0 1800 716 ? D Jan23 0:01 find / -name oracleoracle 27183 0.0 0.0 1800 716 ? D Jan23 0:01 find / -name oracle oracle 29476 0.0 0.0 1728 612 ? D Mar04 0:00 ls --color=tty /archive/dest2/INVoracle 29476 0.0 0.0 1728 612 ? D Mar04 0:00 ls --color=tty /archive/dest2/INV oracle 29501 0.0 0.1 2856 1700 ? D Mar04 0:00 -bashoracle 29501 0.0 0.1 2856 1700 ? D Mar04 0:00 -bash oracle 30165 0.0 0.0 1684 536 ? D Mar04 0:00 mv /archive/dest1/INV/archive/dest2/INVoracle 30165 0.0 0.0 1684 536 ? D Mar04 0:00 mv /archive/dest1/INV/archive/dest2/INV oracle 30262 0.0 0.0 1728 612 ? D Mar04 0:00 ls --color=tty /archive/dest2/INVoracle 30262 0.0 0.0 1728 612 ? D Mar04 0:00 ls --color=tty /archive/dest2/INV oracle 30272 0.0 0.1 2576 1420 ? D Mar04 0:00 -bashoracle 30272 0.0 0.1 2576 1420 ? D Mar04 0:00 -bash oracle 7001 0.0 0.5 191508 6080 ? S 00:18 0:00 ora_pmon_INVoracle 7001 0.0 0.5 191508 6080 ? S 00:18 0:00 ora_pmon_INV oracle 7003 0.0 0.5 191488 5808 ? S 00:18 0:00 ora_dbw0_INVoracle 7003 0.0 0.5 191488 5808 ? S 00:18 0:00 ora_dbw0_INV oracle 7005 0.0 0.6 190956 6380 ? S 00:18 0:00 ora_lgwr_INVoracle 7005 0.0 0.6 190956 6380 ? S 00:18 0:00 ora_lgwr_INV oracle 7007 0.0 0.7 190896 7328 ? S 00:18 0:00 ora_ckpt_INVoracle 7007 0.0 0.7 190896 7328 ? S 00:18 0:00 ora_ckpt_INV oracle 7009 0.0 1.1 190916 11512 ? S 00:18 0:00 ora_smon_INVoracle 7009 0.0 1.1 190916 11512 ? S 00:18 0:00 ora_smon_INV oracle 7011 0.0 0.7 190872 7492 ? S 00:18 0:00 ora_reco_INVoracle 7011 0.0 0.7 190872 7492 ? S 00:18 0:00 ora_reco_INV oracle 7015 0.0 0.4 190972 4984 ? S 00:18 0:00 ora_arc0_INVoracle 7015 0.0 0.4 190972 4984 ? S 00:18 0:00 ora_arc0_INV oracle 7017 0.0 0.4 190944 4848 ? S 00:18 0:00 ora_arc1_INVoracle 7017 0.0 0.4 190944 4848 ? S 00:18 0:00 ora_arc1_INV
  • 19. MonitorowanieMonitorowanie procesówprocesów – katalog /proc– katalog /proc  Jest to pseudosystem plików, którego pozycje są obrazamiJest to pseudosystem plików, którego pozycje są obrazami składników pamięci jądraskładników pamięci jądra ii jego strukturjego struktur danychdanych  KatalogKatalog /proc/proc zawiera przede wszystkim szereg plików i podkatalogów, których nazwy pochodzązawiera przede wszystkim szereg plików i podkatalogów, których nazwy pochodzą od identyfikatorówod identyfikatorów PIDPID odpowiednich procesów.odpowiednich procesów.  W przypadku podkatalogów ich zawartość stanowi kilka plików z informacjami składającymi się naW przypadku podkatalogów ich zawartość stanowi kilka plików z informacjami składającymi się na jeden konkretny procesjeden konkretny proces Przykład:Przykład: #ls /proc/11303#ls /proc/11303 cmdline cwd environ exe fd maps mem root stat statm statuscmdline cwd environ exe fd maps mem root stat statm status #ls –al /proc/11303#ls –al /proc/11303 dr-xr-xr-x 3 oracle dba 0 Apr 13 08:17 .dr-xr-xr-x 3 oracle dba 0 Apr 13 08:17 . dr-xr-xr-x 752 root root 0 Dec 18 19:58 ..dr-xr-xr-x 752 root root 0 Dec 18 19:58 .. -r--r--r-- 1 oracle dba 0 Apr 13 08:18 cmdline-r--r--r-- 1 oracle dba 0 Apr 13 08:18 cmdline -r--r--r-- 1 oracle dba 0 Apr 13 08:18 cpu-r--r--r-- 1 oracle dba 0 Apr 13 08:18 cpu lrwxrwxrwx 1 oracle dba 0 Apr 13 08:18 cwd -> /Oracle/app/oracle8i/product/8.1.7/dbslrwxrwxrwx 1 oracle dba 0 Apr 13 08:18 cwd -> /Oracle/app/oracle8i/product/8.1.7/dbs -r-------- 1 oracle dba 0 Apr 13 08:18 environ-r-------- 1 oracle dba 0 Apr 13 08:18 environ lrwxrwxrwx 1 oracle dba 0 Apr 13 08:18 exe -> /Oracle/app/oracle8i/product/8.1.7/bin/oraclelrwxrwxrwx 1 oracle dba 0 Apr 13 08:18 exe -> /Oracle/app/oracle8i/product/8.1.7/bin/oracle dr-x------ 2 oracle dba 0 Apr 13 08:18 fddr-x------ 2 oracle dba 0 Apr 13 08:18 fd -r--r--r-- 1 oracle dba 0 Apr 13 08:18 maps-r--r--r-- 1 oracle dba 0 Apr 13 08:18 maps -rw------- 1 oracle dba 0 Apr 13 08:18 mem-rw------- 1 oracle dba 0 Apr 13 08:18 mem lrwxrwxrwx 1 oracle dba 0 Apr 13 08:18 root -> /lrwxrwxrwx 1 oracle dba 0 Apr 13 08:18 root -> / -r--r--r-- 1 oracle dba 0 Apr 13 08:18 stat-r--r--r-- 1 oracle dba 0 Apr 13 08:18 stat -r--r--r-- 1 oracle dba 0 Apr 13 08:18 statm-r--r--r-- 1 oracle dba 0 Apr 13 08:18 statm -r--r--r-- 1 oracle dba 0 Apr 13 08:18 status-r--r--r-- 1 oracle dba 0 Apr 13 08:18 status Informacje o procesach zawarte w systemie plików /proc są z reguły dostępne w inny sposób (naInformacje o procesach zawarte w systemie plików /proc są z reguły dostępne w inny sposób (na przykład za pomocą polecenia ls)przykład za pomocą polecenia ls)
  • 20. Narzędzia do zarządzania procesamiNarzędzia do zarządzania procesami Program Top:Program Top: # top# top
  • 21. Narzędzia do zarządzania procesamiNarzędzia do zarządzania procesami Program pstree:Program pstree: # pstree -a -c -u -G -l –p# pstree -a -c -u -G -l –p
  • 22. Narzędzia do zarządzania procesamiNarzędzia do zarządzania procesami Program kill:Program kill: # kill pid_procesu# kill pid_procesu # kill -l# kill -l # kill –SIGKILL pid_procesu# kill –SIGKILL pid_procesu  PoleceniePolecenie killallkillall zabija wszystkie z tej samej grupy procesów, co proceszabija wszystkie z tej samej grupy procesów, co proces wywołujący, ale nie jego samego. W efekcie polecenie killall wywołanewywołujący, ale nie jego samego. W efekcie polecenie killall wywołane przezprzez initinit w ramach procedury wyłączającej system zabije wszystkiew ramach procedury wyłączającej system zabije wszystkie działające w nim procesy.działające w nim procesy.  W Linuxie polecenieW Linuxie polecenie killallkillall dopuszcza drugi argument w postacidopuszcza drugi argument w postaci nazwynazwy poleceniapolecenia. Na przykład polecenie:. Na przykład polecenie: #killall –KILL find#killall –KILL find wysyła sygnał KILL do wszystkich procesów wykonujących polecenie findwysyła sygnał KILL do wszystkich procesów wykonujących polecenie find
  • 23. Zarządzanie CPU procesówZarządzanie CPU procesów  Chociaż w systemie istnieje wiele procesów, tak naprawdę w danym momencieChociaż w systemie istnieje wiele procesów, tak naprawdę w danym momencie jest wykonywanyjest wykonywany tylko jedentylko jeden..  Proces po rozpoczęciu wykonywania trwa aż do momentu, gdy musi dokonaćProces po rozpoczęciu wykonywania trwa aż do momentu, gdy musi dokonać operacji we/wy, otrzyma przerwanie od jądra albo też wyczerpie cały odcinekoperacji we/wy, otrzyma przerwanie od jądra albo też wyczerpie cały odcinek (inaczej(inaczej kwant czasukwant czasu).).  Nowoprzetwarzanym jest proces z kolejki, który jestNowoprzetwarzanym jest proces z kolejki, który jest najbardziejnajbardziej uprzywilejowanyuprzywilejowany. Zmiana aktualnie wykonywanego procesu jest nazywana. Zmiana aktualnie wykonywanego procesu jest nazywana przełączeniem kontekstuprzełączeniem kontekstu  Procesy gotowe do wykonania są ustawiane wProcesy gotowe do wykonania są ustawiane w kolejcekolejce.. ZarządcaZarządca zawszezawsze wybiera z kolejki proces owybiera z kolejki proces o najniższym priorytecienajniższym priorytecie..  Z każdym procesem są skojarzone dwa priorytety:Z każdym procesem są skojarzone dwa priorytety:  Liczba niceLiczba nice – pożądany priorytet do wykonania względem pozostałych procesów– pożądany priorytet do wykonania względem pozostałych procesów (kolumna NI po uruchomieniu ps –l)(kolumna NI po uruchomieniu ps –l)  Aktualny priorytet wykonaniaAktualny priorytet wykonania, który jest wyliczany dynamicznie i aktualizowany, który jest wyliczany dynamicznie i aktualizowany przez SO. (kolumna PRI po uruchomieniu ps –l)przez SO. (kolumna PRI po uruchomieniu ps –l)
  • 24. Zarządzanie CPU procesówZarządzanie CPU procesów  W systemie Linux liczby nice mają wartości odW systemie Linux liczby nice mają wartości od -20-20 dodo 2020 (domyślnie(domyślnie 00).). Najbardziej uprzywilejowana jestNajbardziej uprzywilejowana jest -20-20  Specjalna liczba nice –Specjalna liczba nice – 2020 oznacza, że proces ma być wykonywany tylkooznacza, że proces ma być wykonywany tylko wtedy, gdy żaden inny proces nie potrzebuje CPUwtedy, gdy żaden inny proces nie potrzebuje CPU  Każdy użytkownik może być „miły” i zmniejszyć obciążenie procesoraKażdy użytkownik może być „miły” i zmniejszyć obciążenie procesora poprzez zwiększenie liczby nice swoich procesów.poprzez zwiększenie liczby nice swoich procesów.  Zmniejszenie liczby nice dla procesów może dokonać tylko root.Zmniejszenie liczby nice dla procesów może dokonać tylko root.  Sposoby ustalania priorytetu zadania:Sposoby ustalania priorytetu zadania: nice [+|- n] polecenie, na przykład:nice [+|- n] polecenie, na przykład: #nice –n +5 find / -perm +2000 –name ‘*.*’ –ls& (zwiększenie liczby nice do#nice –n +5 find / -perm +2000 –name ‘*.*’ –ls& (zwiększenie liczby nice do 5)5) #nice –n -10 find / -perm +4000 -print& (obniżenie liczby nice do -10).#nice –n -10 find / -perm +4000 -print& (obniżenie liczby nice do -10).
  • 25. Zarządzanie CPU procesówZarządzanie CPU procesów  Zmiana liczby nice procesówZmiana liczby nice procesów  Gdy system jest bardzo obciążony może zaistnieć potrzebaGdy system jest bardzo obciążony może zaistnieć potrzeba zmiany priorytetów niektórym procesomzmiany priorytetów niektórym procesom  Składnia polecenia renice:Składnia polecenia renice: renice nowa_liczba_nice pidrenice nowa_liczba_nice pid  Tylko root może zmniejszyć liczbę nice działającym procesomTylko root może zmniejszyć liczbę nice działającym procesom Przykłady:Przykłady: #renice 10 1264#renice 10 1264 #renice -15 1564#renice -15 1564
  • 26. Monitorowanie wykorzystania CPUMonitorowanie wykorzystania CPU  Jest wiele sposobów uzyskania ogólnego obrazu aktywności CPU. PrzykłademJest wiele sposobów uzyskania ogólnego obrazu aktywności CPU. Przykładem narzędzia, któremożna do tego wykorzystać jest vmstat. Składnia jego użycia tonarzędzia, któremożna do tego wykorzystać jest vmstat. Składnia jego użycia to vmstat interwał [licznik]vmstat interwał [licznik]  Przykład:Przykład: #vmstat 5 4#vmstat 5 4  Pierwsza linia podaje średnią dla systemu od początku jego uruchomieniaPierwsza linia podaje średnią dla systemu od początku jego uruchomienia rr Liczba działających procesów oczekujących w kolejce na wykonanieLiczba działających procesów oczekujących w kolejce na wykonanie cscs Liczba przełączeń kontekstuLiczba przełączeń kontekstu usus Procent cyklów CPU spędzonych w trybie użytkownikaProcent cyklów CPU spędzonych w trybie użytkownika sysy Procent cyklów CPU spędzonych w trybie systemu, zarówno w celu obsługiProcent cyklów CPU spędzonych w trybie systemu, zarówno w celu obsługi programów użytkowników, jak i wykonywania zadań ogólnosystemowychprogramów użytkowników, jak i wykonywania zadań ogólnosystemowych idid Czas bezczynności: procent niewykorzystanych cyklów CPU w czasieCzas bezczynności: procent niewykorzystanych cyklów CPU w czasie interwałuinterwału

Editor's Notes

  1. Cele Lekcji Ta lekcja obejmuje temat administrowania kontami użytkowników w systemie Linux.