De obicei, atunci când executați o comandă în terminal, trebuie să așteptați până când comanda se termină înainte de a putea introduce alta. Aceasta se numește rularea comenzii în prim-plan sau în prim-plan. Când un proces rulează în prim plan, acesta ocupă shell-ul dvs. și puteți interacționa cu acesta folosind dispozitivele de intrare.

Ce se întâmplă dacă comanda durează mult timp pentru a termina și doriți să rulați alte comenzi între timp? Aveți mai multe opțiuni la dispoziție., Opțiunea cea mai evidentă și mai simplă este să începeți o nouă sesiune shell și să rulați comanda în ea. O altă opțiune este să executați comanda în fundal.

un proces de fundal este un proces / comandă care este pornit de la un terminal și rulează în fundal, fără interacțiune din partea utilizatorului.în acest articol, vom vorbi despre procesele de fundal este Linux. Vă vom arăta cum să porniți o comandă în fundal și cum să mențineți procesul în funcțiune după închiderea sesiunii shell.,

Rula un Linux Comandă în Fundal #

Pentru a rula o comandă în fundal, se adaugă simbolul ampersand (&) la sfârșitul comanda:

command &

shell job ID (înconjurat cu paranteze) și ID-ul de proces vor fi imprimate pe terminal:

 25177

puteți avea mai multe procese care rulează în fundal, în același timp.procesul de fundal va continua să scrie mesaje către terminalul de la care ați invocat comanda., To suppress the stdout and stderr messages use the following syntax:

command > /dev/null 2>&1 & 

>/dev/null 2>&1 means redirect stdout to /dev/null and stderr to stdout .,/div>

Pentru a aduce un proces de fundal în prim-plan, de a folosi fg command:

fg

Dacă aveți mai multe locuri de muncă de fundal, include % și slujba de IDENTITATE, după comandă:

fg %1

Pentru a termina procesul de fundal, utilizați kill comandă, urmat de ID-ul procesului:

kill -9 25177

Muta un prim-plan Procesul de Fundal #

Pentru a muta o rulează în prim-plan procesul în fundal:

  1. a Opri procesul prin tastarea Ctrl+Z.,
  2. mutați procesul oprit în fundal tastând bg.

păstrați procesele de fundal care rulează după ce un Shell iese din #

dacă conexiunea dvs. scade sau vă deconectați din sesiunea shell, procesele de fundal sunt terminate. Există mai multe modalități de a menține procesul în funcțiune după încheierea sesiunii interactive shell.,

într-Un fel este de a elimina de la shell e treaba de control folosind disown shell interna:

disown

Dacă aveți mai mult de un fond de locuri de muncă, include % și slujba de IDENTITATE, după comandă:

disown %1

Confirm că locul de muncă este eliminat din tabelul de locuri de munca active folosind jobs -l comandă. Pentru a lista toate procesele care rulează, inclusiv cele refuzate, utilizați comanda ps aux.,

Un alt mod de a menține un proces care rulează după ieșirea shell-ului este să utilizaținohup.

nohup comandă execută un alt program specificat ca argument și ignoră toate SIGHUP (închidere) semnale. SIGHUP este un semnal care este trimis la un proces atunci când terminalul său de control este închis.

Pentru a rula o comandă în fundal folosind nohup comandă, tastați:

nohup command &

comanda de ieșire este redirecționat către nohup.out fișier.,

nohup: ignoring input and appending output to 'nohup.out'

Dacă vă deconectați sau închideți terminalul, procesul nu este terminat.

Alternative #

există o serie de programe care vă permit să aveți mai multe sesiuni interactive în același timp.

Screen #

Screen sau GNU Screen este un program multiplexor terminal care vă permite să începeți o sesiune de ecran și să deschideți orice număr de ferestre (terminale virtuale) în acea sesiune. Procesele care rulează pe ecran vor continua să ruleze atunci când fereastra lor nu este vizibilă, chiar dacă sunteți deconectat.,

Tmux #

Tmux este o alternativă modernă la GNU screen. Cu Tmux, puteți crea, de asemenea, o sesiune și deschide mai multe ferestre în interiorul acelei sesiuni. Sesiunile Tmux sunt persistente, ceea ce înseamnă că programele care rulează în Tmux continuă să ruleze chiar dacă închideți terminalul.

concluzie #

pentru a rula o comandă în fundal, includeți & la sfârșitul comenzii.

când executați o comandă în fundal, nu trebuie să așteptați până când se termină înainte de a putea executa alta.

Articles

Lasă un răspuns

Adresa ta de email nu va fi publicată. Câmpurile obligatorii sunt marcate cu *