Android

Cum să executați comenzi linux în fundal

Tutoriale Video Comenzi linux Cum oprim si pornim serviciile in unix

Tutoriale Video Comenzi linux Cum oprim si pornim serviciile in unix

Cuprins:

Anonim

În mod obișnuit, atunci când rulați o comandă în terminal, trebuie să așteptați până când se termină comanda înainte de a putea intra în alta. Aceasta se numește rularea comenzii în prim plan sau în prim-plan. Când un proces se execută în prim plan, acesta vă ocupă shell-ul ș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 la dispoziție mai multe opțiuni. Cea mai evidentă și simplă opțiune este să porniți o nouă sesiune de shell și să rulați comanda în ea. O altă opțiune este să rulați comanda în fundal.

Un proces de fundal este un proces / comandă care este pornit de la un terminal și se rulează în fundal, fără interacțiune din partea utilizatorului., 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 de funcționare după închiderea sesiunii shell.

Executați o comandă Linux în fundal

Pentru a rula o comandă în fundal, adăugați simbolul ampersand ( & ) la sfârșitul comenzii:

command &

ID-ul de job shell (înconjurat de paranteze) și ID-ul procesului vor fi tipărite 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 pe terminalul de la care ați invocat comanda. Pentru a suprima mesajele stdout și stderr utilizați următoarea sintaxă:

command > /dev/null 2>&1 &

>/dev/null 2>&1 înseamnă redirecționarea stdout către /dev/null și stderr către stdout .

Utilizați utilitatea jobs pentru a afișa starea tuturor lucrărilor oprite și de fundal în sesiunea shell actuală:

jobs -l

Rezultatul include numărul de lucru, ID-ul procesului, starea de lucru și comanda care a început lucrarea:

+ 25177 Running ping google.com &

Pentru a aduce un proces de fundal în prim plan, utilizați comanda fg :

fg

fg %1

Pentru a încheia procesul de fundal, utilizați comanda kill urmată de ID-ul procesului:

kill -9 25177

Mutați un proces în prim plan pe fundal

Pentru a muta un proces de prim plan în curs de fundal:

  1. Opriți procesul tastând Ctrl+Z .Mutați procesul oprit pe fundal tastând bg .

Mențineți procesele de fundal rulând după ieșirea unei cochilii

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

O modalitate este de a elimina lucrarea de la controlul de job al shell-ului folosind shell disown ul dezafectat încorporat:

disown

disown %1

Confirmați că lucrarea este eliminată din tabelul de locuri de muncă active utilizând comanda jobs -l . Pentru a enumera toate procesele în derulare, inclusiv cele dezafectate, folosiți comanda ps aux .

Un alt mod de a menține un proces care rulează după ieșirea din shell este să folosești nohup .

Comanda nohup execută un alt program specificat drept argumentul său și ignoră toate semnalele SIGHUP (hangup). SIGHUP este un semnal care este trimis unui proces atunci când terminalul său de control este închis.

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

nohup command &

Ieșirea comenzii este redirecționată la fișierul nohup.out .

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

alternative

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

Ecran

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 cadrul acelei sesiuni. Procesele care rulează pe ecran vor continua să fie rulate atunci când fereastra lor nu este vizibilă, chiar dacă vă deconectați.

Tmux

Tmux este o alternativă modernă la ecranul GNU. Cu Tmux, puteți crea, de asemenea, o sesiune și puteți deschide mai multe ferestre în acea sesiune. Ședințele 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 o alta.

nohup fg bg joburi dezafectate terminal