Pošaljite proces pozadinskom Linuxu

Send Process Background Linux

Prilikom rada s grafičkim radnim okruženjima rijetko se brinemo o pozadinskim procesima. Ako imamo proces koji se izvodi u prvom planu, možemo brzo iznjedriti još jedan prozor terminala i nastaviti s radom.

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:

$Firefox

Dok 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:

$poslovi

Primjer 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.