User Tools

Site Tools


medium-unix:capitole:capitol-04

This is an old revision of the document!


4. Lucrul cu procese

Acțiunile sunt executate la nivelul sistemului de fișiere prin procese. Rularea unei comenzi înseamnă crearea unui proces în sistemul de operare, proces care execută acțiunea indicată de executabilul din care a luat naștere. Procesele sunt entități active care consumă resurse la nivelul sistemului de operare, cele mai importante fiind procesor, memorie și diverse forme de input/output.

Subiecte abordate

  • Procese, operații cu procese, planificarea proceselor
  • Investigarea proceselor
  • Foreground/background

Best practices

  • În general, nu se prelucrează output-ul comenzii ps
  • Selecția de informații pe orizonatală (ce procese?) față de selecția pe verticală (ce atribute?)
  • \time vs time
  • killall vs pkill

Utilitare folosite

  • ps, pstree, top, htop, /proc, pidof
  • kill, pkill, pgrep
  • time, lsof
  • tmux

Resurse utile

  • TODO
  • TODO

Exerciții

Demo-uri

Lucrul cu procese

Pentru a afla informații despre procese se poate folosi utilitarul ps.

Pentru a afișa toate procesele ce rulează în respectivul moment, rulați comanda:

ps -e

Observați ce informații furnizează rularea numai cu acest parametru (capul de tabel).

Selecția se poate face după o serie de criterii (utilizatorul ce deține procesul, comanda cu care acest a fost lansat, PID etc.). Pentru a selecta doar procesele ce aparțin utilizatorului student, executați comanda:

ps -u student

Rulați comanda:

ps -e -F

Observați în ce mod s-a modificat capul tabelului.

Se poate alege ce câmpuri să fie afișate (PID, utilizator, comandă, memorie ocupată etc.). Pentru a afișa PID-ul, utilizatorul, procentul din memorie utilizat și comanda cu care a fost lansat un proces, rulați comanda:

ps -e -o pid,user,%mem,cmd

Opțiunile de selecție se pot combina cu cele de formatare. De exemplu, pentru a afișa PID-ul și memoria ocupată de procesul cu PID-ul 1, executați:

ps -p 1 -o pid,%mem

Lista se poate sorta după un criteriu dat. De exemplu, putem sorta ascendent lista tuturor proceselor din sistem după PID:

ps -A -o pid,%mem --sort +pid

Pentru a sorta descendent se pune - (minus) în loc de + (plus) în fața criteriului de sortare.

Investigarea proceselor

Deschideți o instanță de editor emacs.

Aflați PID-ul acestuia și, din alt terminal, opriți procesul:

kill -SIGSTOP PID

Această comandă are același efect ca și combinația de taste Ctrl + z. Pentru a termina complet procesul, se pot folosi semnalele SIGTERM sau SIGKILL.

Comanda lsof afișează descriptorii de fișier ai unui proces. Rularea acesteia fără niciun argumente afișează o listă de fișiere care aparține tuturor proceselor deschise:

lsof

Pentru a lista procesele care au deschis fișiere dintr-un anumit director:

lsof +D /dev/

Pentru a lista procesele pornite de un anumit utilizator:

lsof -u "student"

Pentru a lista procesele care încep cu un string:

lsof -c "ssh"

Rularea în background

Pornire proces emacs și folosire Ctrl+z și bg pentru rulare în background.

Pornire proces emacs direct în background.

Exerciții cu procese

Obțineți o listare arborescentă a proceselor folosind comanda pstree și apoi obţineţi o listare similară arborescentă) folosind comanda ps.

Căutați după șirul negates în pagina de manual a comenzii ps după șirul forest.

Afișați procesele care nu aparțin utilizatorului student.

Căutați după șirul negates în pagina de manual a comenzii ps după șirul.

Afișați pentru toate procesele următoarele atribute: PID, comanda cu care a fost lansat, niceness, PID-ul părinteluiși sortați descendent lista după PID-ul părintelui.

Căutați în pagina de manual a comenzii ps secțiunea Standard Format Specifiers.

Verificați faptul că procesul init (PID-ul 1) adoptă procesele orfane. Deschideți un nou terminal și din acesta porniți o instanță de xterm în background. Din instanța de xterm, porniți o a doua instanță de xterm în background. Din terminal afișați lista proceselor în format arborscent, afișând și PID-ul fiecărui proces.

Pentru afișare în format arborescent folosiți comanda pstree.

Identificați PID-ul primei sesiuni de xterm și trimiteți procesului respectiv semnalul SIGKILL. Identificați procesul părinte al celei de-a doua sesiuni de xterm.

Folosiți comanda free pentru a obține detalii despre memoria ocupată.

free poate fi folosit și ca un utilitar pentru monitorizarea continuă a stării memoriei. Identificați un parametru care produce output o dată la 2 secunde.

Folosiți comanda uptime pentru a determina de cât timp funcționează sistemul. Identificați aceleași valori cu ajutorul comenzii top.

Să se afișeze toate fișierele dechise de procesul bash pornit de utilizatorul student.

TODO 2

TODO

medium-unix/capitole/capitol-04.1463418131.txt.gz · Last modified: 2016/05/16 20:02 by razvan