Uvod
Kada većina nas koristi računala, pokrećemo razne aplikacije. Te aplikacije pokreću programi koji se nazivaju poslužitelji ili operacijski sustavi. Postoji mnogo različitih vrsta poslužitelja koji rade na različite načine. Jedan od njih je Linux. Linux pokreće aplikacije u obliku procesa.
U Linuxu svaku aplikaciju nazivamo 'procesom'. Poslužitelj je sposoban upravljati niskorazinskim aspektom životnog ciklusa procesa. Kao korisnik, možda ćete morati komunicirati s poslužiteljem kako biste manipulirali nekim aspektima više razine. Možete komunicirati s operacijskim sustavom i upravljati njime pomoću raznih alata. Postoji mnogo naredbi koje možete koristiti za izmjenu različitih aspekata i funkcija poslužitelja. Evo jednostavnog za praćenje vodiča o tome kako jednostavno postaviti svoj poslužitelj temeljen na Linuxu na Ubuntuu. Možete dodatno naučiti kako instalirati LAMP Stack (Linux, Apache, MySQL, PHP).
Ovaj se vodič fokusira na to kako možete koristiti ps, kill i nice za upravljanje procesima u Linuxu.
Pregledavanje pokrenutih procesa u Linuxu
- top
Za početak, jedna od najosnovnijih naredbi koje biste trebali znati je top. Ovaj vam alat pomaže vizualizirati koji se procesi trenutno izvode na sustavu. Evo kako će izgledati kada ga pokrenete:
|
1 |
top |

Na vrhu rezultata možete pronaći statistiku sustava. To vam daje informacije o stvarima kao što su opterećenje sustava i broj zadataka. U ovom primjeru možete utvrditi da postoji jedan pokrenuti proces i 55 neaktivnih procesa. Neaktivni procesi ili procesi na čekanju su oni koje trenutno ne koristite. To znači da ne zauzimaju resurse sustava. Na kraju, možete vidjeti sve pokrenute procese pri dnu skočnog prozora sa statistikom korištenja.
- htop
Prije nego što upotrijebite ovu naredbu, morat ćete je instalirati iz repozitorija upisivanjem i pokretanjem sljedećeg:
|
1 |
sudo apt-get install htop |
Nakon što ga instalirate, možete ga koristiti za prikaz sličnih informacija kao i s top. Glavna razlika je u tome što s naredbom htop dobivate rezultat prilagođeniji korisniku:
|
1 |
htop |

Kao što vidite, ovaj je rezultat lako pratiti i interpretirati.
Korištenje ps za popis procesa
Iako možete koristiti gore navedene naredbe za pregled pokrenutih procesa, one možda neće uvijek pokriti sve scenarije. Srećom, na raspolaganju nam je jači i fleksibilniji alat. To je naredba ps.
Istražimo što ćete vidjeti ako pokrenete naredbu kakva jest:
|
1 |
ps |

U ovom izlazu možete vidjeti sve procese koji se izvode u vezi s trenutnim korisnikom i sesijom. Međutim, to vam ne daje puno informacija.
Ako želite cjelovitiji pregled svih procesa koji se izvode na sustavu, trebate upotrijebiti argument. Argument vam omogućuje da vidite sve procese koje posjeduju svi korisnici bez obzira na povezanost s terminalom. Izlaz se također pojavjuje u formatu koji je vrlo prilagođen korisniku i jednostavan za čitanje. Evo primjera:
|
1 |
ps aux |

S druge strane, ove informacije možete vizualizirati i u obliku stabla. Ovdje, kao što ćete vidjeti, hijerarhijski odnosi također postaju očiti:
|
1 |
ps axjf |

U ovom primjeru možete vidjeti kako je kthreadd prikazan kao roditelj procesa koji slijede nakon njega.
- Što su ID-ovi procesa?
Kao korisnik Linuxa ili Unix sustava, trebali biste znati o ID-ovima procesa. Poznati i kao PID-ovi, to su jedinstveni identiteti koje sustav dodjeljuje svakom procesu. Pomoću tih identiteta poslužitelj prati svaki pojedinačni proces. Da biste saznali PID određenog procesa, morate upotrijebiti naredbu pgrep, ovako:
|
1 |
pgrep bash |
|
1 2 |
Izlaz: 1340 |
Kada pokrenete sustav, počinje se izvoditi prvi proces. Ovaj proces se zove init. Kao zadani mehanizam, init proces dobiva PID '1'. PID ovog procesa možete provjeriti na sljedeći način:
|
1 |
pgrep init |
|
1 2 |
Izlaz: 1 |
Proces init tada ima odgovornost pokrenuti sve ostale programe ili procese. Razumljivo, sljedeći procesi imat će sve veće ili veće PID-ove.
- Što su roditeljski procesi?
Još jedan koncept koji treba poznavati je roditeljski proces. Ako proces A pokrene proces B, tada je proces A roditeljski proces procesa B. Kako bi ih lakše razlikovao, sustav roditeljskim procesima dodjeljuje PPID. Ovaj PPID možete uočiti u zaglavljima stupaca kad god pokrenete neku naredbu za upravljanje kao što su top, htop i ps.
- Što su odnosi roditelj-dijete?
Kao što već znamo, roditeljski procesi pokreću dječje procese. Ovo stvaranje odvija se u dva koraka. Prvi je fork(). On započinje stvaranjem novog adresnog prostora. Također kopira resurse roditelja koristeći copy-on-write kako bi bili dostupni i dječjem procesu. Drugi je exec(). On je odgovoran za učitavanje i izvršavanje izvršne datoteke u novostvorenom adresnom prostoru.
- Što ako dječji proces umre prije roditeljskog procesa?
U slučaju da se to dogodi, dječji proces postaje zombi. To jest, sve dok roditeljski proces ne prikupi neke informacije o njemu ili ne javi jezgri da mu povezane informacije više nisu potrebne. Kada se to dogodi, resursi koje je proces koristio bit će oslobođeni.
- Što ako roditeljski proces umre prije dječjeg procesa?
U ovom scenariju, sustav će dječji proces dodijeliti drugom roditeljskom procesu. To može biti init ili bilo koji drugi proces.
Slanje signala procesima u Linuxu
Možete natjerati određeni proces da vam odgovori slanjem signala. Signali vam pomažu u komunikaciji s operacijskim sustavom. Signal možete koristiti kako biste prekinuli rad aplikacije, pokrenuli je ili izmijenili određeno ponašanje ili zadatak.
- Korištenje PID-a za slanje signala
Jedan od alata koje možete koristiti za slanje signala u Linuxu je kill. Ova naredba, kao što joj i samo ime govori, pomaže vam da prekinete ili ubijete proces:
|
1 |
kill PIDoftarget_process |
Ovaj alat šalje signal TERM procesu, što mu govori da prekine proces. Naredba omogućuje aplikaciji da izvrši čišćenje i nesmetano se zatvori. U slučaju da se program ne zatvori glatko nakon signala TERM, možete to zaobići izravnim slanjem signala KILL:
|
1 |
kill -KILL PIDoftarget_process |
Ovaj signal ne ide programu. On ide jezgri operacijskog sustava. Jezgra će izravno ugasiti proces. Ovo možete koristiti kada program ignorira signale koje mu šaljete.
U ovoj naredbi također možete zamijeniti naziv signala brojem koji mu je pridružen. Na primjer, možete koristiti ‘-15’ umjesto ‘-TERM’. Slično tome, možete zamijeniti ‘-KILL’ s ‘-9’.
- Korištenje signala u različite svrhe
Signale možete koristiti i za druge stvari osim za ubijanje ili prekidanje programa. Na primjer, jedan problem s kojim se možete susresti je ponovno pokretanje demona. Svaki put kada demon primi signal prekida veze ili HUP, ponovno će se pokrenuti u programima kao što je Apache. Kako biste to zaobišli, možete koristiti sljedeći signal:
|
1 |
sudo kill -HUP pidofapache |
Ova naredba će natjerati Apache da ponovno učita svoju konfiguraciju. Kao rezultat toga, nastavit će vam posluživati relevantan sadržaj.
Ako želite vidjeti koje signale možete poslati pomoću alata kill, upotrijebite sljedeću naredbu:
|
1 |
kill -l |

- Slanje signala po nazivu
Tradicionalno biste poslali signal koristeći PID programa. Međutim, imate mogućnost slanja signala i pomoću uobičajenog naziva procesa. Da biste to učinili, možete koristiti naredbu pkill. Ona radi slično kao što radi naredba pkill. Jedina razlika je u tome što vam omogućuje korištenje naziva procesa:
|
1 |
pkill -9 ping |
Ova naredba pkill ekvivalent je sljedećoj naredbi kill:
|
1 |
kill -9 `pgrep ping` |
Također imate naredbu za slučajeve kada želite poslati signal svakoj instanci umjesto određenom procesu. Sljedeća naredba poslat će signal TERM svim instancama Firefoxa koje se izvode na sustavu:
|
1 |
killall firefox |
Prilagođavanje prioriteta procesa
Još jedna stvar koju možete učiniti s Linux naredbama je prilagodba prioriteta. To znači da možete odlučiti koji proces ima prioritet u vašem poslužiteljskom okruženju. Možda postoje određeni procesi koje smatrate kritičnima. Drugi možda nisu toliko potrebni. Sustav će izvršiti potonje programe tek kada preostane nešto resursa.
Prioritet procesa u Linuxu možete kontrolirati putem naredbe niceness. Ova vrijednost označava zadatke visokog prioriteta kao manje „ljubazne”, a procese niskog prioriteta kao više „ljubazne”. Razmišljajte o tome ovako: procesi visokog prioriteta su manje „ljubazni” jer gomilaju resurse. Zadaci niskog prioriteta ih dijele pa su „ljubazniji”.
Možete vidjeti nice vrijednost određenog procesa kada pokrenete naredbu top. Ova vrijednost se nalazi u stupcu „NI”. Zadaci visokog prioriteta imali bi nice vrijednosti u rasponu između „-19/-20”. Procesi niskog prioriteta kreću se između „19/20”. Vidjet ćete nešto poput ovoga:
|
1 |
top |
|
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 |
Zadaci: 56 ukupno, 1 pokrenuto, 55 spava, 0 zaustavljeno, 0 zombi Cpu(s): 0.0%us, 0.3%sy, 0.0%ni, 99.7%id, 0.0%wa, 0.0%hi, 0.0%si, 0.0%st Mem: 1019600k ukupno, 324496k iskorišteno, 695104k slobodno, 8512k međuspremnici Swap: 0k ukupno, 0k iskorišteno, 0k slobodno, 264812k predmemorirano PID USER PR NI VIRT RES SHR S %CPU %MEM TIME+ COMMAND 1635 root 20 0 17300 1200 920 R 0.3 0.1 0:00.01 top 1 root 20 0 24188 2120 1300 S 0.0 0.2 0:00.56 init 2 root 20 0 0 0 0 S 0.0 0.0 0:00.00 kthreadd 3 root 20 0 0 0 0 S 0.0 0.0 0:00.11 ksoftirqd/0 |
Ako želite pokrenuti proces s osobno dodijeljenom nice vrijednošću, jednostavno trebate upotrijebiti naredbu nice:
|
1 |
nice -n 15 commandtoexecute |
Ova naredba će raditi samo kada pokrećete navedeni program. Ako želite promijeniti nice vrijednost programa koji već radi, morate upotrijebiti renice:
|
1 |
renice 0 PIDtoprioritize |
Zaključak
Kao što vidite, ovi alati se prilično razlikuju od onih grafičkih. Zbog toga mogu biti teški za razumijevanje početnicima. Ovaj vodič će vam pomoći da se upoznate s naredbama. Više vježbe pomoći će vam da bolje učite i učinkovitije ih koristite.
Pogledajte naše ostale resurse koji vam mogu pomoći da bolje upravljate svojim Linux poslužiteljima, uključujući vodiče o kako konfigurirati svoj Linux poslužitelj za korištenje autentifikacije temeljene na SSH ključevima, pronalaženju datoteka na vašem Linux VPS sustavu pomoću whereis, which, whatis, readlink i find, i čitanju i postavljanju varijabli okruženja i ljuske na Linux VPS-u.
Sretno s radom!
Komentari
Još nema komentara. Budite prvi.