User Tools

Site Tools


unixmix:capitole:capitol-03

This is an old revision of the document!


Tutorial

Informații despre procese

Deschideți un terminal.

  • Rulați comanda ps.
    • Comanda afișează informații despre două procese:
      • ps - comanda tocmai rulată
      • bash - interpretorul de comenzi care rulează în terminal
        • Rețineți PID-ul procesului bash.
  • Rulați încă o dată comanda ps.
    • Ce s-a schimbat în coloana PID. De ce?
  • Rulați comanda pidof bash.
    • Ce observați?
    • Rulați comanda pidof init.
      • Procesul cu PID-ul 1 este rădăcina ierarhiei de procese.
  • Rulați comanda ps -e.
    • Ce observați?
    • Pentru vizualizarea întregului output puteți folosi bara din dreapta sau Shift-PageUp/Shift-PageDown.
    • Căutați în pagina de manual pentru a afla ce face parametrul -e.
  • Rulați comanda ps -eF.
    • Ce observați?
    • Căutați în pagina de manual pentru a afla ce face parametrul -F.
    • Observați coloana PPID.
      • Câte linii au același PPID. De ce?
  • Rulați comanda pstree.
    • Se observă mult mai ușor structura ierarhică a proceselor.
      • Navigați mai ușor cu Shift-PageUp/Shift-PageDown.
  • Rulați comanda top.
    • Apăsați tasta h pentru a afla mai multe informații despre cum puteți interacționa cu utilitarul top.
      • Spre exemplu, apăsați tasta F pentru a selecta coloana după care doriți să sortați informația.
        • A pentru a selecta după PID.
    • top afișează diverse informații.
      • câmpul CPU arată cât ocupă din procesor
      • câmpul TIME arată timpul total efectiv de rulare
  • Rulați comanda htop.
    • Utilitarul este asemănător top însă mult mai interactiv.
      • Interacțiunea poate fi făcută și cu mouse-ul.

Informații despre procese din sistemul de fișiere

Directorul /proc conține informații despre toate procesele din sistem.

  • Folosiți comanda tree pentru a afișa structura directorului /proc.
  • Rulați comanda pidof bash.
    • Ce PID are interpretorul curent?
  • Navigați în directorul /proc/$PID, unde $PID este PID-ul anterior.
    • Alternativ, puteți folosi cd /proc/$(pidof bash).
  • Afișați în format lung conținutul directorului curent.
    • Ce reprezintă fișierul exe?
    • Afișați conținutul fișierului limits.
      • Ce observați?

Într-un alt terminal, deschideți editorul nano.

  • Reveniți în primul terminal și aflați PID-ul procesului.
  • Navigați în directorul din ierarhia '/proc' asociat.
  • Listați conținutul directorului.
    • Ce dimensiune ocupă acest director?
      • Revedeți capitolul anterior.
  • Închideți editorul nano.
  • Listați conținutul directorului.
    • Ce observați?

Starea proceselor

  • Rulați comanda yes a.
    • Încercați să tastați o comandă. (exemplu ls)
    • Pentru a opri comanda apăsați Ctrl-c
  • Rulați comanda pidof yes.
    • Ce observați?
  • Rulați comanda yes b.
    • Apăsați Ctrl-z.
  • Rulați comanda pidof yes.
    • Ce observați?
  • Rulați din nou comanda yes. Apăsați Ctrl-z. Apoi rulați pidof yes.
    • Ce observați?
  • Rulați comanda jobs.

Pentru a aduce un proces din starea “Stopped” în “Running” există două posibilități:

  • Rulați comanda fg.
    • Încercați să opriți output-ul prin apăsarea Ctrl-c.
      • Ce observați?
  • Rulați comanda jobs.
  • Rulați comanda bg.
    • Încercați să opriți output-ul prin apăsarea Ctrl-c.
      • Ce observați?
      • Procesul rulează în background. Utilizatorul are acces la terminal, însă output-ul este prea rapid pentru a fi vizibil.
    • Pentru a fi siguri că nu aveți altceva tastat, apăsați enter. Apoi apăsați fg și enter.
      • Procesul este adus în foreground.
        • Încercați să opriți output-ul prin apăsarea Ctrl-c.
      • Ce observați?

Rulați comanda xeyes.

  • Procesul lansat rulează în foreground.
  • Rulați Ctrl-Z în terminal.
    • Observați că aplicația s-a oprit.
  • Rulați comanda jobs.
  • Rulați comanda bg în terminal.
    • Aplicația a început să funcționeze din nou, iar utilizatorul are acces la terminal.
  • Închideți aplicația.
  • Rulați comanda xeyes &
    • Procesul rulează în background.
    • Rulați comanda jobs.
      • Ce observați?

Încărcarea procesorului

  • Rulați comanda uptime.

Vom încerca să creăm foarte multe procese. Pentru aceasta, avem nevoie de un program pe care să îl rulăm.
Copiați codul de mai jos într-un fișier text numit test.c. Puteți folosi nano:

  • Selectați text-ul cu copy.
  • Rulați comanda nano test.c
  • Apăsați combinația Ctrl-Shift-v
#include <stdlib.h>
int main(void)
{
	char *ptr;
	int i;

	for (i = 0; i < 12; i++)
		fork();

	for (i = 0; i < 10; i++)
		ptr = malloc(sizeof(char));

	return 0;
}
  • Salvați și ieșiți din nano.
    • Ctrl-X apoi y.
  • Compilați programul folosind comanda (nu este necesar să înțelegeți cum se face compilarea):
    • gcc -o test test.c
  • Rulați programul folosind comanda ./test.
  • Rulați comanda uptime.
    • Ce observați?

Exerciții

Folosind comanda ps, încercați să afișați doar câmpurile PID și PPID ale tutror proceselor din sistem.

Filtrați toate procesele din sistem după memoria utilizată (hint: top)

Aflați care este load-ul sistemului folosind comanda top. Ce alte informații puteți afla asemănător?

Folosind comanda yes, faceți în așa fel încât output-ul să arate alternativ literele a și b.

Rulați comanda gedit. Închideți terminal-ul. Ce s-a întâmplat?

  • Folosiți comanda nohup astfel încât la închiderea terminalului, editorul text să nu se închidă.
unixmix/capitole/capitol-03.1373360728.txt.gz · Last modified: 2013/07/09 12:05 by alexef