Međutim, ako se nalazite u sirovoj terminalnoj ljusci kao što je SSH, često ćete se osjećati zabrinuti zbog procesa koji zauzimaju i blokiraju ljusku dok se ne dovrše, osobito na dugotrajnim poslovima. Tu dolazi do izražaja koncept procesa pozadine i prednjeg plana.
Ovaj vodič će raspravljati o procesima pozadine i prednjeg plana, uključujući njihovo stvaranje i upravljanje u Linuxu.
Što je proces?
Dopustite mi da počnem na osnovnoj razini: što je proces?
U Linuxu je proces instanca programa. Obično to znači da je svaka naredba ili izvršna datoteka u ljusci proces.
Postoje uglavnom dvije vrste procesa:
- Procesi u prvom planu
- Pozadinski procesi
Procesi u prvom planu uglavnom su tipične aplikacije koje pokrećemo i s njima stupamo u interakciju. Primjer bi bio upravitelj datoteka nautilus u Gnomeu. U većini slučajeva procese u prvom planu možemo pokrenuti iz ljuske ili okruženja radne površine.
S druge strane, pozadinski procesi rade u pozadini i ne zahtijevaju unos ili interakciju od korisnika. Primjer bi bio bilo koji tipični Linux demon.
Kako pokrenuti proces u pozadini
Pretpostavimo da imamo proces koji za vrijeme izvođenja zauzima ljusku sesiju i ometa nas u izvršavanju naredbi sve dok ne izađe.
Na primjer, ako pokrenemo preglednik Firefox u ljusci, on će zauzeti sesiju do završetka procesa.
$firefox
Kao što vidite, sve dok je Firefox pokrenut, prompt ljuske nije dostupan i ne možemo više izvršavati naredbe.
Da bismo to riješili, možemo to učiniti na dva načina:
1: Upotreba ampersanda (&)
Prva metoda je korištenje znaka & znaka &. Ovo govori ljusci da izvodi bilo koju naredbu koja prethodi ampersandu u pozadini.
Primjer:
firefox&
U takvom scenariju, proces se izvršava u pozadini i stvara se kao novi upit ljuske koji nam omogućuje nastavak izvršavanja naredbi.
Također daje dva numerička identifikatora. Prvi u uglatim zagradama je Job ID, dok je sljedeći ID procesa.
2: Upotrebom CTRL + Z, naredba bg.
Sljedeća metoda koju možete koristiti za stavljanje procesa u pozadinu jest korištenje prečaca CTRL + Z. Time se zaustavlja proces od blokiranja ljuske. Zatim možete koristiti naredbu bg da biste je gurnuli u pozadinu.
Na primjer, počnite pokretanjem Firefoxa kao:
$FirefoxDok je proces u tijeku, pritisnite CTRL + Z. Ovo će vratiti vaš shell shell. Na kraju, unesite naredbu bg da biste proces gurnuli u pozadinu.
Kako prikazati pozadinske procese
Za pregled i upravljanje procesima u pozadini, koristite naredbu jobs u ljusci. To će prikazati pozadinske poslove u trenutnoj terminalskoj sesiji.
Na primjer:
$posloviPrimjer izlaza pozadinskih poslova:
Da biste proces koji se izvodi u pozadini doveli u prvi plan, upotrijebite naredbu fg nakon koje slijedi ID posla.
Na primjer, da bismo posao firefoxa stavili u prvi plan, koristimo naredbu:
$fg %1
Za ponovno postavljanje u pozadinu pritisnite CTRL + Z, a zatim naredba bg.
Kako učiniti proces postojanim nakon što ljuska umre
Kad pokrećete procese u pozadini, a vaša ljuska sesija umre, svi se procesi povezani s njom završavaju, što može biti problematično, osobito ako se radi o SSH sesiji.
Međutim, to nije preveliki problem ako koristite terminalni multiplekser poput tmuxa ili zaslona jer u tom slučaju jednostavno možete ponovno spojiti sesiju.
Međutim, ako pokrenete ljuska sesiju bez multipleksera, možete koristiti naredbu nohup.
Naredba nohup imuna je na prekid veze i može zanemariti signal SIGHUP koji se šalje procesu.
Stoga, ako pokrenete naredbu s nohupom, ona će se nastaviti izvršavati čak i ako ljuska sesije slučajno umre.
Na primjer, da biste pokrenuli Firefox s nohupom, upotrijebite naredbu:
nohupFirefox&Ovo će pokrenuti proces u pozadini jer se ljuska nastavlja.
Možete pokrenuti novu terminalsku sesiju i pregledati pozadinske poslove. Vidjet ćete da proces još uvijek radi u pozadini.
Zaključak
U ovom smo vodiču raspravljali o različitim načinima pokretanja i slanja procesa u pozadinu u Linuxu. Također smo obradili kako pozadinski proces prenijeti u pozadinu i zadržati prekid veze nakon završetka ljuske.