Successfully reported this slideshow.
We use your LinkedIn profile and activity data to personalize ads and to show you more relevant ads. You can change your ad preferences anytime.
LinuxFEST 11.10.2008                  GNU/Linux                                     ProcesyAutor: Michal SedlákEmail: mich...
Prezentácia je založená na                            The LBook:              An Introductory Guide to Linux Basics       ...
Obsah   ●       Všeobecne o procesoch       –     Typy, atribúty, životný cyklus   ●       Správa procesov   ●       Pláno...
Program - Proces  ●      Program je pasívny zhluk inštrukcií v      strojovo zrozumiteľnej forme      –   ELF - Executable...
Proces - Vlákno●    Proces je vo všeobecnosti inštancia programu    –   Obraz strojového kódu (code)    –   Naalokovaná pa...
Proces - Vlákno   –   Každý proces obsahuje jedno, alebo viac       vlákien   –   Každé vlákno patrí niektorému procesu11....
Proces vs. vláknomichal@michal­desktop:~$ cat test.py import time, threading, processingfor cls in [threading.Thread, proc...
Typy procesov   ●       Interaktívne procesy   ●       Automatické procesy   ●       Démoni (daemons)11.10.2008           ...
Interaktívne procesy●    Inicializované a ovládané cez terminál     –   Popredie          ●              Normálne spusteni...
Práca s interaktívnymi    procesmi●prikaz      Spustí príkaz v popredí●prikaz & Spustí príkaz na pozadí a uvolní terminál●...
Automatické procesy   ●       Nie sú pripojené k terminálu   ●       Spúšťané na základe FIFO prístupu       –     at     ...
Daemon   ●       Vo všeobecnosti inicializované pri štarte   ●       Procesy spustené nepretržite   ●       Serverové apli...
Atribúty procesov      –   Process ID (PID)      –   Parent Proces ID (PPID)      –   Nice      –   Terminal (TTY)      – ...
Parametre procesov     michal@michal­desktop:~$ passwd &     [1] 6129     [1]+  Stopped                 passwd     michal@...
Informácie o procesoch                  michal@ubuntu:~$ ps                    PID TTY          TIME CMD                  ...
Informacie o procesoch     michal@ubuntu:~$ pstree     init─┬─NetworkManager───{NetworkManager}          ├─NetworkManagerD...
Príklady michal@ubuntu:~$ pgrep ­u michal 5749 5824 5825 5828 . . . michal@ubuntu:~$ ps ­fp $(pgrep firefox) UID     PID  ...
11.10.2008   18/35
11.10.2008   19/35
Vytvorenie procesu   ●       Fork       –   Vytvorenie kópie procesu       –   Zistenie PID (Dieťaťu sa PID zdá byť 0)    ...
Démoni   ●       Démon má ako PPID 1 (init)   ●       Rodičia démonizujú svoje deti, aby deti       prežili po ich smrti  ...
Ukončenie procesu a zombie   ●       Pri normálnom ukončení vracia proces       rodičovi exit status   ●       Zombie – ro...
Príklady exit kódovmichal@michal­desktop:~$ ps |grep neexistuje;echo $?1michal@michal­desktop:~$ ps |grep bash;echo $?1865...
Signály   ●       Štandardne akýkoľvek signál ukončí proces   ●       Medziprocesová komunikácia (IPC)   ●   kill ­l; kill...
Správa výkonu procesov   ●       Motivácia - Efektívne využitie prostriedkov   ●       Úloha pre administrátora   ●   Prvá...
load   ●       Počíta vážený priemer procesov v stave:       –     Running - bežiace       –     Runnable – čakajúce na CP...
Čo môže ovplyvniť užívateľ?   ●       Nespúšťať nič čo nie je potrebné       –     Veľa premenných prostredia       –     ...
Príklad   michal@ubuntu:~$ time locate *bash* > output   real 0m0.526s   user 0m0.428s   sys 0m0.024s   michal@ubuntu:~$ t...
Buďte milý k iným procesom   ●       Upraviť prioritu programom       –     nice       –     renice   ●       Default 0   ...
Pamäť a diskmichal@ubuntu:~$ free ­m             total   used   free shared buffers cachedMem:           757    745     12...
Čo s ušetreným časom   ●       sleep   ●       at   ●       batch   ●       cron   $(sleep 1800; echo Skoncilo cviko) &   ...
at, atrm, atq   ●      Spustí program v danom čase  michal@ubuntu:~$ at 22:00  warning: commands will be executed using /b...
cron   ●       Plánovač   ●       /etc/cron.d   ●   crontab ­e (editovať výhradne cez -e)   ●   crontab ­l   ●       Uživa...
Zhrnutie   ●       Čo sú procesy a vlákna   ●       Typy procesov   ●       Životný cyklus procesu   ●       Signály   ●  ...
Ďakujem za pozornosť             Na prípadné otázky rád odpoviem             michal6103 [at] gmail [dot] com11.10.2008    ...
Sponzori
Referenciehttp://en.wikipedia.org/wiki/Daemon_(computer_softwarehttp://en.wikipedia.org/wiki/Demonhttp://www.cyberciti.biz...
Upcoming SlideShare
Loading in …5
×

Linux: Procesy

1,023 views

Published on

  • Be the first to comment

  • Be the first to like this

Linux: Procesy

  1. 1. LinuxFEST 11.10.2008 GNU/Linux ProcesyAutor: Michal SedlákEmail: michal6103 [at] gmail [dot] com
  2. 2. Prezentácia je založená na The LBook: An Introductory Guide to Linux Basics http://linuxbasics.org/course/book/index Vizuálna téma prezentácie je odvodená témy vytvorenej: Sakari Koivunen and Henrik Omma Released under the LGPL license.11.10.2008 2/35
  3. 3. Obsah ● Všeobecne o procesoch – Typy, atribúty, životný cyklus ● Správa procesov ● Plánovanie procesov – Sleep, at, cron, crontab11.10.2008 3/35
  4. 4. Program - Proces ● Program je pasívny zhluk inštrukcií v strojovo zrozumiteľnej forme – ELF - Executable and Linking Format ● Jeden program môže spúšťať viac procesov11.10.2008 4/35
  5. 5. Proces - Vlákno● Proces je vo všeobecnosti inštancia programu – Obraz strojového kódu (code) – Naalokovaná pamäť (heap, stack) – Tabuľka zdrojov (file deskriptory) – Bezpečnostné atribúty (EUID, RUID, EGUI...) – Stav procesoru (obsah registrov + PC, SP...)● Vlákno je postupnosť inštrukcií – Zdieľa pamäť procesu – Program Counter, Stack Pointer, Data registers11.10.2008 5/35
  6. 6. Proces - Vlákno – Každý proces obsahuje jedno, alebo viac vlákien – Každé vlákno patrí niektorému procesu11.10.2008 6/35
  7. 7. Proces vs. vláknomichal@michal­desktop:~$ cat test.py import time, threading, processingfor cls in [threading.Thread, processing.Process]:    start = time.time()    for _ in range(1000):        child = cls()        child.start()        child.join()    print Spawning 1000 children with %s took %.2fs % (        cls.__name__, time.time() ­ start)michal@ubuntu:~$ python test.py Spawning 1000 children with Thread took 0.19sSpawning 1000 children with Process took 4.76s11.10.2008 7/35
  8. 8. Typy procesov ● Interaktívne procesy ● Automatické procesy ● Démoni (daemons)11.10.2008 8/35
  9. 9. Interaktívne procesy● Inicializované a ovládané cez terminál – Popredie ● Normálne spustenie procesu ● Proces pripojený k terminálu ● Terminál posiela príkazy procesu – Pozadie ● Spustenie so znakom & za príkazom: xterm & ● Proces sa po inicializácií odpojí od terminálu michal@michal­desktop:~$ xterm & [1] 29611 michal@michal­desktop:~$ jobs [1]+  Running                 xterm & michal@michal­desktop:~$ 11.10.2008 9/35
  10. 10. Práca s interaktívnymi procesmi●prikaz Spustí príkaz v popredí●prikaz & Spustí príkaz na pozadí a uvolní terminál●jobs Zobrazí procesy bežiace na pozadí● Ctrl+Z Pozastavenie procesu SIGSTOP (suspend)● Ctrl+C Prerušenie programu v popredí SIGINT●bg Reaktivácia pozastaveného procesu●fg Vyvolanie programu do popredia●kill ukončenie procesu11.10.2008 10/35
  11. 11. Automatické procesy ● Nie sú pripojené k terminálu ● Spúšťané na základe FIFO prístupu – at ● Spustenie procesu v konkrétnom čase – batch ● Spustenie procesu ak je zaťaženie systému nízke11.10.2008 11/35
  12. 12. Daemon ● Vo všeobecnosti inicializované pri štarte ● Procesy spustené nepretržite ● Serverové aplikácie (client-server) ● Napr. httpd(Apache), inetd, ftpd11.10.2008 12/35
  13. 13. Atribúty procesov – Process ID (PID) – Parent Proces ID (PPID) – Nice – Terminal (TTY) – UID ● Real User Id (RUID) ● Effective User Id (EUID) – GID ● Real Group Id (RGID) ● Effective Group Id (EGID)11.10.2008 13/35
  14. 14. Parametre procesov michal@michal­desktop:~$ passwd & [1] 6129 [1]+  Stopped                 passwd michal@michal­desktop:~$ ps ­axo pid,ppid ,nice,user,euid,ruid,cmd   PID  PPID  NI USER      EUID  RUID  CMD  6106  5944   0 1000      1000  1000  bash  6129  6106   0 root         0  1000  passwd  6130  6106   0 1000      1000  1000  ps11.10.2008 14/35
  15. 15. Informácie o procesoch michal@ubuntu:~$ ps   PID TTY          TIME CMD  6133 pts/0    00:00:00 bash  6983 pts/0    00:00:00 ps michal@ubuntu:~$ ps aux USER       PID %CPU %MEM    VSZ   RSS TTY  STAT START   TIME COMMAND root         1  0.0  0.2   2844  1692 ?    Ss   21:20   0:01 /sbin/init root         2  0.0  0.0      0     0 ?    S<   21:20   0:00 [kthreadd] root         3  0.0  0.0      0     0 ?    S<   21:20   0:00 [ksoftirqd/0] root         4  0.0  0.0      0     0 ?    S<   21:20   0:00 [watchdog/0] root         5  0.0  0.0      0     0 ?    S<   21:20   0:00 [events/0] root         6  0.0  0.0      0     0 ?    S<   21:20   0:00 [khelper] ... ... ...11.10.2008 15/35
  16. 16. Informacie o procesoch michal@ubuntu:~$ pstree init─┬─NetworkManager───{NetworkManager}      ├─NetworkManagerD      ├─acpid      ├─atd      ├─avahi­daemon───avahi­daemon      ├─bonobo­activati───{bonobo­activati}      ├─cron      ├─cupsd      ├─dhcdbd───dhclient      ├─firefox───5*[{firefox}]      ├─gajim.py───sh      ├─gconfd­2      ├─gdm───gdm─┬─Xorg      │           └─gnome­session─┬─bluetooth­apple      │                           ├─gnome­panel      │                           ├─metacity      │                           ├─nautilus───{nautilus}      │                           ├─nm­applet      │                           ├─python11.10.2008 16/35
  17. 17. Príklady michal@ubuntu:~$ pgrep ­u michal 5749 5824 5825 5828 . . . michal@ubuntu:~$ ps ­fp $(pgrep firefox) UID     PID  PPID  C STIME TTY TIME CMD michal  7096     1  8 22:27 ?   00:00:02 /usr/lib/firefox­3.0.3/f... michal@ubuntu:~$ renice +4 $(pgrep firefox) 7096: old priority 0, new priority 4 michal@ubuntu:~$ pkill firefox michal@ubuntu:~$ killall firefox firefox: no process killed11.10.2008 17/35
  18. 18. 11.10.2008 18/35
  19. 19. 11.10.2008 19/35
  20. 20. Vytvorenie procesu ● Fork – Vytvorenie kópie procesu – Zistenie PID (Dieťaťu sa PID zdá byť 0) – Vykonanie algoritmu na základe PID – Nový proces beží v rovnakom prostredí ● Nastavenie I/O, environment variables,... ● Exec – Nahradenie procesu zavolaným procesom – PID sa nemení – Nahradí sa stack, heap, data11.10.2008 20/35
  21. 21. Démoni ● Démon má ako PPID 1 (init) ● Rodičia démonizujú svoje deti, aby deti prežili po ich smrti ● Príklad - Window manager – Dokážeme zmeniť WM bez reštartu ním spustených programov11.10.2008 21/35
  22. 22. Ukončenie procesu a zombie ● Pri normálnom ukončení vracia proces rodičovi exit status ● Zombie – rodič neprebral signál o ukončení procesu ● Exit status je číslo ● Uvoľnenie zdrojov ● Zabitie svojich zombie detí11.10.2008 22/35
  23. 23. Príklady exit kódovmichal@michal­desktop:~$ ps |grep neexistuje;echo $?1michal@michal­desktop:~$ ps |grep bash;echo $?18653 pts/0    00:00:00 bash0michal@michal­desktop:~$ ls t*;echo $?test.py  tree.DBF  tv.jpg0michal@michal­desktop:~$ ls neexistuje;echo $?ls: nie je možný prístup k asd: No such file or directory211.10.2008 23/35
  24. 24. Signály ● Štandardne akýkoľvek signál ukončí proces ● Medziprocesová komunikácia (IPC) ● kill ­l; kill ­9 ­1 ● 15 SIGTERM – Ukončenie procesu ● 2 SIGINT – Prerušenie (maskovateľný) ● 9 SIGKILL – Zabitie (nemaskovateľný) ● 1 SIGHUP – Odpojenie terminálu - nohup ● man 7 signal11.10.2008 24/35
  25. 25. Správa výkonu procesov ● Motivácia - Efektívne využitie prostriedkov ● Úloha pre administrátora ● Prvá informácia load ● Výkon – CPU – Pamäť – I/O11.10.2008 25/35
  26. 26. load ● Počíta vážený priemer procesov v stave: – Running - bežiace – Runnable – čakajúce na CPU – Uninterruptible sleep – čakajúce na I/O ● 1, 5, 15 minút ● 175% v poslednej minúte – V priemere čakalo 0,75 procesu michal@ubuntu:~$ uptime  19:51:48 up  1:24,  4 users,  load average: 1.75, 0.86, 0.5411.10.2008 26/35
  27. 27. Čo môže ovplyvniť užívateľ? ● Nespúšťať nič čo nie je potrebné – Veľa premenných prostredia – Dlhé cesty na vyhľadávanie spustiteľných súborov – Addony do window managerov atp. – Zbytočné služby (bluetooth, cupsd) ● Použiť programy s menšou záťažou – locate namiesto find11.10.2008 27/35
  28. 28. Príklad michal@ubuntu:~$ time locate *bash* > output real 0m0.526s user 0m0.428s sys 0m0.024s michal@ubuntu:~$ time find / ­name *bash* >output real 1m11.150s user 0m1.152s sys 0m3.424s11.10.2008 28/35
  29. 29. Buďte milý k iným procesom ● Upraviť prioritu programom – nice – renice ● Default 0 ● Kladné hodnoty ● Záporné hodnoty iba root ● Indexácia beagle, trackerd ● Nie je dobrý nápad znižovať prioritu interaktívnej aplikácií11.10.2008 29/35
  30. 30. Pamäť a diskmichal@ubuntu:~$ free ­m             total   used   free shared buffers cachedMem:           757    745     12      0       2    289­/+ buffers/cache:    453    304Swap:         1027     24   1002michal@ubuntu:~$ vmstat procs ­­­­­­­­memory­­­­­­­­­­ ­swap ­­­io­­ ­system­ ­­­­cpu­­­­ r  b   swpd  free buff  cache si so  bi  bo  in   cs us sy id wa 2  0  25532 10756 1156 298216  1  4 282 147 321 1172 19  4 73  411.10.2008 30/35
  31. 31. Čo s ušetreným časom ● sleep ● at ● batch ● cron $(sleep 1800; echo Skoncilo cviko) & $(nohup sleep 5h; nice ­30 moj_program) &11.10.2008 31/35
  32. 32. at, atrm, atq ● Spustí program v danom čase michal@ubuntu:~$ at 22:00 warning: commands will be executed using /bin/sh at> echo Spustil som sa: $(date) > at.txt at> <EOT> job 1 at Fri Oct 10 22:00:00 2008 michal@ubuntu:~$ cat at.txt  Spustil som sa: Pi okt 10 22:00:00 CEST 2008 michal@ubuntu:~$ batch warning: commands will be executed using /bin/sh at> echo Spustil som sa: $(date) > at.txt at> <EOT> job 2 at Fri Oct 10 22:08:00 2008 michal@ubuntu:~$ cat at.txt  Spustil som sa: Pi okt 10 22:14:29 CEST 200811.10.2008 32/35
  33. 33. cron ● Plánovač ● /etc/cron.d ● crontab ­e (editovať výhradne cez -e) ● crontab ­l ● Uživateľské crontaby v /var/spool/cron#/etc/crontab#m h dom mon dow  user command17 * *    *   * root cd / && run­parts ­­report /etc/cron.hourly25 6 *    *   * root cd / && run­parts ­­report /etc/cron.daily47 6 *    *   7 root cd / && run­parts ­­report /etc/cron.weekly52 6 1    *   * root cd / && run­parts ­­report /etc/cron.monthly#11.10.2008 33/35
  34. 34. Zhrnutie ● Čo sú procesy a vlákna ● Typy procesov ● Životný cyklus procesu ● Signály ● Priority ● Plánovanie11.10.2008 34/35
  35. 35. Ďakujem za pozornosť Na prípadné otázky rád odpoviem michal6103 [at] gmail [dot] com11.10.2008 35/35
  36. 36. Sponzori
  37. 37. Referenciehttp://en.wikipedia.org/wiki/Daemon_(computer_softwarehttp://en.wikipedia.org/wiki/Demonhttp://www.cyberciti.biz/tips/linux-more-on-user-id-passwhttp://www.faqs.org/faqs/unix-faq/faq/part4/section-10.hhttp://www.cs.berkeley.edu/~istoica/classes/cs194/05/nohttp://en.wikipedia.org/wiki/Vforkhttp://en.wikipedia.org/wiki/Exec_(operating_system)http://en.wikipedia.org/wiki/Fork-exechttp://en.wikipedia.org/wiki/Load_(computing)

×