Šta su procesi?
Kada pokreneš program na Linuxu — bilo da je to ls, tekstualni editor ili web server — operativni sistem kreira proces. Proces je program u izvršavanju: to nije samo kod na disku, već aktivan entitet koji zauzima memoriju, koristi procesor i komunicira sa ostatkom sistema.
Analogija: Recept u kuvaru je program (mirno stoji u knjizi). Kada počneš da kuvaš po njemu — to je proces (zauzima šporet, kuhinjsko posuđe, tvoju pažnju). Iste recipe mogu istovremeno kuvati dve osobe — to su dva nezavisna procesa istog programa.
Svaki korisnik, čak i sam sistem, može imati desetine ili stotine procesa koji istovremeno rade u pozadini.
PID i PPID
Svaki proces dobija jedinstveni identifikator — PID (Process ID). To je ceo broj koji sistem dodeljuje pri kreiranju procesa.
Pored PID-a, svaki proces ima i PPID (Parent Process ID) — PID procesa koji ga je kreirao. Na taj način procesi formiraju hijerarhiju nalik stablu: svaki proces ima roditelja, a može imati i decu.
init (PID 1)
└── bash (PID 1042)
└── ls (PID 1087)
Proces sa PID-om 1 (init ili systemd) je koreni proces — on je roditelj svih ostalih.
Stanja procesa
Proces tokom svog životnog veka može biti u različitim stanjima:
| Stanje | Opis |
|---|---|
| Running | Proces trenutno koristi procesor ili čeka na red za procesor |
| Sleeping | Proces čeka na neki događaj (npr. ulaz sa tastature, odgovor mreže) |
| Stopped | Proces je pauziran, obično signalom SIGTSTP (Ctrl+Z) |
| Zombie | Proces je završio rad, ali roditelj još nije pročitao njegov izlazni status |
Zombie procesi ne zauzimaju procesor ni memoriju — samo čekaju da roditelj "preuzme" njihov status. Obično su prolazni i nestaju sami od sebe.
Komanda ps — pregled procesa
ps (process status) prikazuje spisak aktivnih procesa.
Osnovna upotreba
ps
Prikazuje samo procese u trenutnoj sesiji:
PID TTY TIME CMD
1042 pts/0 00:00:00 bash
1089 pts/0 00:00:00 ps
ps aux — svi procesi
ps aux
Prikazuje sve procese na sistemu, uključujući i one koji ne pripadaju trenutnom terminalu:
USER PID %CPU %MEM VSZ RSS TTY STAT START TIME COMMAND
root 1 0.0 0.1 22568 1796 ? Ss 09:00 0:01 /sbin/init
root 2 0.0 0.0 0 0 ? S 09:00 0:00 [kthreadd]
student 1042 0.0 0.1 5984 2048 pts/0 Ss 09:10 0:00 bash
student 1089 0.0 0.0 7584 1024 pts/0 R+ 09:15 0:00 ps aux
ps -ef — alternativni format
ps -ef
Sličan prikaz, ali u standardnom Unix formatu. Uvek prikazuje PPID:
UID PID PPID C STIME TTY TIME CMD
root 1 0 0 09:00 ? 00:00:01 /sbin/init
student 1042 840 0 09:10 pts/0 00:00:00 bash
student 1089 1042 0 09:15 pts/0 00:00:00 ps -ef
Tumačenje kolona
| Kolona | Značenje |
|---|---|
USER |
Korisnik koji je vlasnik procesa |
PID |
Identifikator procesa |
PPID |
Identifikator roditeljskog procesa |
%CPU |
Procenat procesora koji proces koristi |
%MEM |
Procenat RAM memorije koja je u upotrebi |
STAT |
Stanje procesa (R=running, S=sleeping, T=stopped, Z=zombie) |
COMMAND |
Naziv i argumenti programa |
Komanda top — interaktivni prikaz
top je interaktivni alat koji u realnom vremenu prikazuje procese sortirane po potrošnji procesora:
top
Pritiskom na q izlaziš iz programa. Korisne prečice unutar top-a:
| Taster | Akcija |
|---|---|
q |
Izlaz |
k |
Ubij proces (unesi PID) |
M |
Sortiraj po potrošnji memorije |
P |
Sortiraj po potrošnji procesora (podrazumevano) |
u |
Filtriraj po korisniku |
Komanda htop — unapređena verzija
htop je vizuelno bogatija alternativa za top. Pruža grafičke trake za CPU i memoriju, lakšu navigaciju i direktno ubijanje procesa kursorskim tasterima.
htop
Napomena:
htopmožda nije instaliran po podrazumevanoj konfiguraciji. Instaliraj ga sasudo apt install htop(Debian/Ubuntu) ilisudo dnf install htop(Fedora).
Pronalaženje konkretnog procesa
Kombinovanjem ps i grep možeš brzo naći proces po imenu:
ps aux | grep nginx # nginx je popularan web server
root 1234 0.0 0.5 12345 5678 ? Ss 10:00 0:01 nginx: master process
www-data 1235 0.0 0.3 9876 3210 ? S 10:00 0:00 nginx: worker process
Savet: Poslednji red će uvek biti sam
grepproces. Da ga isključiš, koristi:ps aux | grep [n]ginxUglaste zagrade sprečavaju grep da pronađe sebe.