Beginners Guide to TikTok for Search - Rachel Pearson - We are Tilt __ Bright...
Linux: Procesy
1. LinuxFEST 11.10.2008
GNU/Linux
Procesy
Autor: Michal Sedlák
Email: michal6103 [at] gmail [dot] com
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. Obsah
●
Všeobecne o procesoch
– Typy, atribúty, životný cyklus
●
Správa procesov
●
Plánovanie procesov
– Sleep, at, cron, crontab
11.10.2008 3/35
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 procesov
11.10.2008 4/35
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 registers
11.10.2008 5/35
6. Proces - Vlákno
– Každý proces obsahuje jedno, alebo viac
vlákien
– Každé vlákno patrí niektorému procesu
11.10.2008 6/35
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@michaldesktop:~$ xterm &
[1] 29611
michal@michaldesktop:~$ jobs
[1]+ Running xterm &
michal@michaldesktop:~$
11.10.2008 9/35
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 procesu
11.10.2008 10/35
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ízke
11.10.2008 11/35
12. Daemon
●
Vo všeobecnosti inicializované pri štarte
●
Procesy spustené nepretržite
●
Serverové aplikácie (client-server)
●
Napr. httpd(Apache), inetd, ftpd
11.10.2008 12/35
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
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, data
11.10.2008 20/35
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 programov
11.10.2008 21/35
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
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/O
11.10.2008 25/35
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.54
11.10.2008 26/35
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 find
11.10.2008 27/35
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.424s
11.10.2008 28/35
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
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. 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 2008
11.10.2008 32/35
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 command
17 * * * * root cd / && runparts report /etc/cron.hourly
25 6 * * * root cd / && runparts report /etc/cron.daily
47 6 * * 7 root cd / && runparts report /etc/cron.weekly
52 6 1 * * root cd / && runparts report /etc/cron.monthly
#
11.10.2008 33/35
34. Zhrnutie
●
Čo sú procesy a vlákna
●
Typy procesov
●
Životný cyklus procesu
●
Signály
●
Priority
●
Plánovanie
11.10.2008 34/35
35. Ďakujem za pozornosť
Na prípadné otázky rád odpoviem
michal6103 [at] gmail [dot] com
11.10.2008 35/35