Pošljite postopek v ozadje Linux

Send Process Background Linux



Pri delu z grafičnimi namiznimi okolji nas redko skrbijo procesi v ozadju. Če imamo v ospredju postopek, lahko hitro sprostimo drugo terminalsko okno in nadaljujemo z delom.

Če pa ste v surovi terminalski lupini, kot je SSH, boste pogosto zaskrbljeni zaradi procesov, ki zasedajo in blokirajo lupino, dokler niso dokončani, zlasti pri dolgotrajnih opravilih. Tu pride do izraza koncept ozadja in postopkov v ospredju.







Ta vadnica bo razpravljala o procesih v ozadju in ospredju, vključno z njihovim ustvarjanjem in upravljanjem v Linuxu.



Kaj je proces?

Dovolite mi, da začnem na osnovni ravni: kaj je proces?



V Linuxu je proces primerek programa. Običajno to pomeni, da je vsak ukaz ali izvedljiva datoteka v lupini proces.





Obstajata predvsem dve vrsti procesov:

  • Procesi v ospredju
  • Ozadni procesi

Procesi v ospredju so predvsem tipične aplikacije, ki jih zaženemo in z njimi delujemo. Primer bi bil upravitelj datotek nautilus v Gnomeju. V večini primerov lahko začnemo procese v ospredju iz lupine ali namiznega okolja.



Po drugi strani pa procesi v ozadju tečejo v ozadju in od uporabnika ne zahtevajo vnosa ali interakcije. Primer bi lahko bil vsak tipičen demon Linuxa.

Kako zagnati postopek v ozadju

Recimo, da imamo postopek, ki med izvajanjem zavzema sejo lupine in nas ovira pri izvajanju ukazov, dokler ne zapusti.

Če na primer v lupini zaženemo brskalnik Firefox, bo zasedel sejo do zaključka procesa.

$firefox


Kot lahko vidite, dokler Firefox deluje, poziv lupine ni na voljo in ukazov ne moremo več izvajati.

To lahko rešimo na dva načina:

1: Uporaba znaka Ampersand (&)

Prva metoda je uporaba znaka & znaka. To pove lupini, naj izvaja kateri koli ukaz pred znakom ampersand v ozadju.

Primer:

firefox&

V takem scenariju se postopek izvede v ozadju in se prikaže kot nov poziv lupine, ki nam omogoča nadaljevanje izvajanja ukazov.

Ponuja tudi dva številska identifikatorja. Prvi v oglatih oklepajih je ID opravila, naslednji pa ID procesa.

2: Uporabite CTRL + Z, ukaz bg.

Naslednja metoda, s katero lahko postopek postavite v ozadje, je uporaba bližnjice CTRL + Z. S tem ustavite postopek, da blokira lupino. Nato lahko z ukazom bg potisnete v ozadje.

Na primer, zaženite Firefox kot:

$Firefox

Med izvajanjem postopka pritisnite CTRL + Z. To vrne poziv lupine. Nazadnje vnesite ukaz bg, da potisnete postopek v ozadje.

Kako prikazati procese v ozadju

Za ogled in upravljanje procesov v ozadju uporabite ukaz jobs v lupini. To bo pokazalo opravila v ozadju v trenutni terminalski seji.

Na primer:

$službe

Primer izhoda opravil v ozadju:

Če želite v ospredje postaviti proces, ki se izvaja v ozadju, uporabite ukaz fg, ki mu sledi ID opravila.

Na primer, da bi opravilo firefox postavili v ospredje, uporabimo ukaz:

$fg %1

Če želite znova postaviti ozadje, pritisnite CTRL + Z in nato ukaz bg.

Kako narediti proces obstojen po smrti Shell

Ko izvajate procese v ozadju in vaša seja lupine umre, se vsi procesi, povezani z njo, končajo, kar je lahko problematično, še posebej, če gre za sejo SSH.

Vendar to ni prevelika težava, če uporabljate terminalski multiplekser, na primer tmux ali zaslon, ker lahko v tem primeru preprosto znova priključite sejo.

Če pa zaženete lupinsko sejo brez multiplekserja, lahko uporabite ukaz nohup.

Ukaz nohup je imun na prekinitve in lahko prezre signal SIGHUP, poslan v proces.

Če torej izvedete ukaz z nohupom, se bo še naprej izvajal, tudi če seja lupine pomotoma umre.

Na primer, če želite zagnati Firefox z nohupom, uporabite ukaz:

nohupFirefox&

Tako se bo postopek izvajal v ozadju, ker bo lupina trajala.

Zaženete lahko novo terminalsko sejo in si ogledate opravila v ozadju. Videli boste, da postopek še vedno teče v ozadju.

Zaključek

V tej vadnici smo razpravljali o različnih načinih izvajanja in pošiljanja procesov v ozadje v sistemu Linux. Opisali smo tudi, kako prenesti proces ozadja v ozadje in vztrajati pri prekinitvi ob zaključku lupine.