Sve što trebate znati o procesima u Linuxu [Sveobuhvatan vodič]


U ovom članku ćemo proći kroz osnovno razumijevanje procesa i ukratko pogledati kako upravljati procesima u Linuxu pomoću određenih naredbi.

Proces se odnosi na program koji se izvršava; to je pokrenuta instanca programa. Sastoji se od programskih instrukcija, podataka pročitanih iz datoteka, drugih programa ili unosa od korisnika sistema.

Vrste procesa

U osnovi postoje dvije vrste procesa u Linuxu:

  • Procesi u prvom planu (također se nazivaju interaktivnim procesima) – oni se inicijaliziraju i kontroliraju kroz terminalsku sesiju. Drugim riječima, mora postojati korisnik povezan sa sistemom da bi pokrenuo takve procese; nisu se automatski pokrenuli kao dio sistemskih funkcija/usluga.
  • Pozadinski procesi (također se nazivaju neinteraktivni/automatski procesi) – su procesi koji nisu povezani sa terminalom; ne očekuju nikakav korisnički unos.

Šta su Daemoni?

Ovo su posebne vrste pozadinskih procesa koji počinju pri pokretanju sistema i nastavljaju da rade zauvek kao usluga; oni ne umiru. Pokreću se kao sistemski zadaci (pokreću se kao usluge), spontano. Međutim, korisnik ih može kontrolirati putem init procesa.

Kreiranje procesa u Linuxu

Novi proces se obično kreira kada postojeći proces napravi tačnu kopiju sebe u memoriji. Podređeni proces će imati isto okruženje kao njegov roditelj, ali samo je ID broj procesa drugačiji.

Postoje dva uobičajena načina za kreiranje novog procesa u Linuxu:

  • Korišćenje funkcije System() – ova metoda je relativno jednostavna, međutim, neefikasna je i ima značajno određene sigurnosne rizike.
  • Korišćenje funkcije fork() i exec() – ova tehnika je malo napredna, ali nudi veću fleksibilnost, brzinu, zajedno sa sigurnošću.

Kako Linux identificira procese?

Budući da je Linux višekorisnički sistem, što znači da različiti korisnici mogu pokretati različite programe na sistemu, svaka pokrenuta instanca programa mora biti jedinstveno identificirana od strane kernela.

A program se identificira po ID-u procesa (PID) kao i po ID-u nadređenog procesa (PPID), stoga se procesi mogu dalje kategorizirati u:

  • Roditeljski procesi – to su procesi koji kreiraju druge procese tokom vremena rada.
  • Podređeni procesi – ove procese kreiraju drugi procesi tokom vremena rada.

The Init Process

Početni proces je majka (roditelj) svih procesa na sistemu, to je prvi program koji se izvršava kada se Linux sistem pokrene; upravlja svim ostalim procesima u sistemu. Pokreće ga sam kernel, tako da u principu nema roditeljski proces.

Init proces uvijek ima ID procesa 1. Funkcionira kao usvojitelj za sve procese bez roditelja.

Možete koristiti pidof komandu da pronađete ID procesa:

pidof systemd
pidof top
pidof httpd

Da biste pronašli ID procesa i ID nadređenog procesa trenutne ljuske, pokrenite:

echo $$
echo $PPID

Pokretanje procesa u Linuxu

Jednom kada pokrenete naredbu ili program (na primjer cloudcmd – CloudCommander), on će pokrenuti proces u sistemu. Možete započeti prvi (interaktivni) proces na sljedeći način, on će biti povezan s terminalom i korisnik može poslati unos:

cloudcmd

Linux pozadinski poslovi

Da biste pokrenuli proces u pozadini (neinteraktivan), koristite simbol &, ovdje proces ne čita unos od korisnika dok se ne premjesti u prvi plan.

cloudcmd &
jobs

Također možete poslati proces u pozadinu tako što ćete ga suspendirati pomoću [Ctrl + Z], ovo će poslati signal SIGSTOP procesu, čime će zaustaviti njegove operacije; postaje neaktivan:

tar -cf backup.tar /backups/*  #press Ctrl+Z
jobs

Da nastavite s izvođenjem gore suspendirane naredbe u pozadini, koristite naredbu bg:

bg

Za slanje pozadinskog procesa u prvi plan, koristite naredbu fg zajedno sa ID-om posla na sljedeći način:

jobs
fg %1

Možda će vam se također svidjeti: Kako pokrenuti Linux naredbu u pozadini i odvojiti proces u terminalu

Stanja procesa u Linuxu

Tokom izvršavanja, proces se mijenja iz jednog stanja u drugo ovisno o svom okruženju/okolnostima. U Linuxu proces ima sljedeća moguća stanja:

  • Pokreće se – ovdje ili radi (to je trenutni proces u sistemu) ili je spreman za pokretanje (čeka da bude dodijeljen jednom od CPU-a).
  • Čekanje – u ovom stanju, proces čeka da se dogodi događaj ili sistemski resurs. Uz to, kernel također razlikuje dvije vrste procesa čekanja; prekinuti procesi čekanja – mogu biti prekinuti signalima i neprekinuti procesi čekanja – čekaju direktno na hardverskim uslovima i ne mogu biti prekinuti bilo kakvim događajem/signalom.
  • Zaustavljeno – u ovom stanju, proces je zaustavljen, obično primanjem signala. Na primjer, proces koji se otklanja greške.
  • Zombi – ovdje je proces mrtav, zaustavljen je, ali još uvijek ima unos u tabeli procesa.

Kako pogledati aktivne procese u Linuxu

Postoji nekoliko Linux alata za pregled/liste pokrenutih procesa na sistemu, dvije tradicionalne i dobro poznate su ps i top komande:

1. ps komanda

Prikazuje informacije o izboru aktivnih procesa na sistemu kao što je prikazano u nastavku:

ps 
ps -e | head 

2. vrh – Alat za nadzor sistema

top je moćan alat koji vam nudi dinamički prikaz sistema koji radi u stvarnom vremenu kao što je prikazano na slici ispod:

top 

Pročitajte ovo za više najboljih primjera upotrebe: 12 TOP primjera naredbi u Linuxu

3. pogledi – Alat za nadzor sistema

pogledi je relativno nov alat za nadzor sistema sa naprednim funkcijama:

glances

Za sveobuhvatan vodič za upotrebu, pročitajte: Pogledi – Napredni alat za praćenje sistema u realnom vremenu za Linux

Postoji nekoliko drugih korisnih alata za praćenje Linux sistema koje možete koristiti za popis aktivnih procesa, otvorite vezu ispod da pročitate više o njima:

  1. 20 alata komandne linije za praćenje performansi Linuxa
  2. 13 korisnijih alata za praćenje Linuxa

Kako kontrolirati procese u Linuxu

Linux također ima neke naredbe za kontrolu procesa kao što su kill, pkill, pgrep i killall, u nastavku je nekoliko osnovnih primjera kako ih koristiti:

pgrep -u tecmint top
kill 2308
pgrep -u tecmint top
pgrep -u tecmint glances
pkill glances
pgrep -u tecmint glances

Da biste naučili kako koristiti ove naredbe u dubini, da biste ubili/završili aktivne procese u Linuxu, otvorite donje veze:

  1. Vodič za Kill, Pkill i Killall komande za završetak Linux procesa
  2. Kako pronaći i uništiti pokrenute procese u Linuxu

Imajte na umu da ih možete koristiti da ubijete aplikacije koje ne reaguju u Linuxu kada se vaš sistem zamrzne.

Slanje signala procesima

Osnovni način kontrole procesa u Linuxu je slanje signala njima. Postoji više signala koje možete poslati procesu da vidite sve pokrenute signale:

kill -l

Da pošaljete signal procesu, koristite naredbe kill, pkill ili pgrep koje smo ranije spomenuli. Ali programi mogu odgovoriti na signale samo ako su programirani da prepoznaju te signale.

Većina signala je za internu upotrebu od strane sistema, ili za programere kada pišu kod. Ovo su signali koji su korisni korisniku sistema:

  • SIGHUP 1 – šalje se procesu kada je njegov kontrolni terminal zatvoren.
  • SIGINT 2 – šalje se procesu od njegovog kontrolnog terminala kada korisnik prekine proces pritiskom na [Ctrl+C].
  • SIGQUIT 3 – šalje se procesu ako korisnik pošalje signal za izlaz [Ctrl+D].
  • SIGKILL 9 – ovaj signal odmah prekida (ubija) proces i proces neće izvršiti nikakve operacije čišćenja.
  • SIGTERM 15 – ovo je signal završetka programa (kill će poslati ovo po defaultu).
  • SIGTSTP 20 – šalje se procesu od strane njegovog kontrolnog terminala kako bi zatražio zaustavljanje (zaustavljanje terminala); pokrenuo korisnik pritiskom na [Ctrl+Z].

Slijede primjeri naredbi kill za ubijanje Firefox aplikacije koristeći njen PID nakon što se zamrzne:

pidof firefox
kill 9 2687
OR
kill -KILL 2687
OR
kill -SIGKILL 2687  

Da biste ubili aplikaciju koristeći njeno ime, koristite pkill ili killall na sljedeći način:

pkill firefox
killall firefox 

Promjena prioriteta Linux procesa

Na Linux sistemu svi aktivni procesi imaju prioritet i određenu lijepu vrijednost. Procesi sa višim prioritetom će normalno dobiti više CPU vremena od procesa nižeg prioriteta.

Međutim, korisnik sistema sa root privilegijama može uticati na to pomoću naredbi nice i renice.

Iz izlaza gornje naredbe, NI pokazuje vrijednost procesa nice:

top  

Koristite naredbu nice da postavite lijepu vrijednost za proces. Imajte na umu da normalni korisnici mogu pripisati lijepu vrijednost od nula do 20 procesima koji posjeduju.
Samo root korisnik može koristiti negativne vrijednosti nice.

Za renice prioritet procesa, koristite naredbu renice na sljedeći način:

renice +8  2687
renice +8  2103

Pogledajte naše nekoliko korisnih članaka o tome kako upravljati i kontrolirati Linux procese.

  1. Upravljanje Linux procesima: pokretanje, gašenje i sve između
  2. Pronađite top 15 procesa prema korištenju memorije s 'top' u batch načinu rada
  3. Pronađite najbolje pokrenute procese prema najvećoj upotrebi memorije i CPU-a u Linuxu
  4. Kako pronaći naziv procesa koristeći PID broj u Linuxu

To je sve za sada! Imate li pitanja ili dodatne ideje, podijelite ih s nama putem obrasca za povratne informacije u nastavku.