This shows you the differences between two versions of the page.
uso:laboratoare:new:02-process:get-a-life [2018/10/09 22:19] razvan.deaconescu [Trimiterea de semnale unui proces] |
uso:laboratoare:new:02-process:get-a-life [2019/10/05 20:59] (current) cristiana.stan [Trimiterea de semnale unui proces] |
||
---|---|---|---|
Line 1: | Line 1: | ||
===== Get a Life ===== | ===== Get a Life ===== | ||
- | ==== Procese detașate de terminal ==== | ||
- | Pentru acest exercițiu avem nevoie de pachetul **transmission-cli**. Îl putem instala folosind comanda: | + | ==== Trimiterea de semnale unui proces ==== |
- | <code bash> | + | Pentru acest exercițiu trebuie să vă asigurați că sunteți în directorul potrivit. Rulați comanda |
- | student@eg306:~$ sudo apt-get install transmission-cli | + | <code> |
+ | cd ~/uso-lab/02-process/support/ | ||
</code> | </code> | ||
- | Folosiți Transmission în linie de comandă pentru a descărca o imagine de Ubuntu, [[http://releases.ubuntu.com/17.04/ubuntu-17.04-desktop-amd64.iso.torrent?_ga=2.179407716.1129929276.1508229525-1809341997.1504894444|de aici]]. Descărcați fișierul .torrent în ''/home/student/Downloads''. | + | În directorul respectiv este scriptul ''batman.sh'': |
- | + | <code> | |
- | <code bash> | + | student@uso:~/.../02-process/support$ ls |
- | student@midgard:~$ transmission-cli ~/Downloads/ubuntu-17.04-desktop-amd64.iso.torrent | + | batman.sh bg-proc.sh it-s-a-trap.sh |
</code> | </code> | ||
- | Dintr-un alt terminal determinați PID-ul acestui proces. Închideți terminalul din interfața grafică (X din colțul din dreapta sus). Căutați din nou procesul după identificator. | + | Rulați scriptul ''batman.sh''. Procesul interceptează toate semnalele cu indecși de la 1 la 13, mai puțin 9 (din motive evidente). De fiecare dată când primește un semnal cu indexul între 1 și 13 el afișează pe ecran un caracter. Mai jos aveți maparea dintre indecșii semnalelor și caracterul afișat: |
- | + | ||
- | **1.1** Ce s-a întâmplat cu procesul nostru transmission-cli tocmai creat? Care credeți că este cauza? | + | |
- | + | ||
- | Deschideți din nou un terminal, dar de data folosiți-vă de comanda **nohup** (man nohup) pentru a lansa procesul ''transmission-cli'' pentru descărcarea imaginii de Ubuntu. Închideți din nou terminalul din interfața grafică. Observați că procesul rămâne în viață. Determinați PID-ul acestui proces. | + | |
- | + | ||
- | **1.2** Ce fel de semnal se generează atunci când închidem terminalul și pe care a doua oară procesul transmission-gtk îl ignoră? | + | |
- | + | ||
- | ==== Trimiterea de semnale unui proces ==== | + | |
- | + | ||
- | Mergeți în directorul ''support'' aferent laboratorului unde găsiți scriptul ''batman.sh''. | + | |
- | + | ||
- | Rulați-l. Procesul interceptează toate semnalele cu indecși de la 1 la 13, mai puțin 9 (din motive evidente). De fiecare dată când primește un semnal cu indexul între 1 și 13 el afișează pe ecran un caracter. Mai jos aveți maparea dintre indecșii semnalelor și caracterul afișat: | + | |
<columns 50% 50% -> | <columns 50% 50% -> | ||
Line 51: | Line 39: | ||
</columns> | </columns> | ||
- | **2.1** Într-un alt terminal aflați pid-ul procesului și trimiteți-i semnale astfel încât procesul să afișeze pe ecran șirul de caractere ''uso rullz''. | + | **2.1** Într-un alt terminal aflați PID-ul procesului și trimiteți-i semnale astfel încât procesul să afișeze pe ecran șirul de caractere ''uso rullz''. |
==== Recuperare fișier folosind procfs ==== | ==== Recuperare fișier folosind procfs ==== | ||
Line 59: | Line 47: | ||
Rulați filmul cu un player de filme. În timp ce rulează, ștergeți fișierul. | Rulați filmul cu un player de filme. În timp ce rulează, ștergeți fișierul. | ||
- | Până la a termina de rulat filmul, recuparați fișierul folosind procfs (din ''/proc''), din directorul aferent procesului player de filme. | + | Până la a termina de rulat filmul, recuperați fișierul folosind procfs (din ''/proc''), din directorul aferent procesului player de filme. |
==== Inspectare comenzi de investigare procese ==== | ==== Inspectare comenzi de investigare procese ==== | ||
Folosind utilitarul ''strace'' inspectați ce fișiere din procfs (din ''/proc'') sunt deschide de utilitarul ''lsof'' pentru afișarea descriptorilor deschiși de un proces existent, de utilitarul ''pmap'' pentru afișarea memorie unui proces și de utilitarul ''free'' pentru afișarea memoriei disponibile din sistem. | Folosind utilitarul ''strace'' inspectați ce fișiere din procfs (din ''/proc'') sunt deschide de utilitarul ''lsof'' pentru afișarea descriptorilor deschiși de un proces existent, de utilitarul ''pmap'' pentru afișarea memorie unui proces și de utilitarul ''free'' pentru afișarea memoriei disponibile din sistem. |