Android

Comanda Linux nohup

nohup - Run Commands in the Background - Linux CLI

nohup - Run Commands in the Background - Linux CLI

Cuprins:

Anonim

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.

De obicei, atunci când rulați un program peste SSH, dacă conexiunea dvs. scade sau vă deconectați, sesiunea se încheie și toate procesele executate de la terminal se vor opri. Aici comanda nohup vine la îndemână. Ignoră toate semnalele de configurare, iar procesul va continua să ruleze.

Cum se utilizează comanda nohup

Sintaxa pentru comanda nohup este următoarea:

nohup COMMAND

Comanda nu acceptă alte opțiuni, cu excepția standardului --help și --version .

Să aruncăm o privire la următorul exemplu:

nohup mycommand

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

nohup execută comanda mycommand în prim plan și redirecționează ieșirea comenzii către fișierul nohup.out . Acest fișier este creat în directorul de lucru curent. Dacă utilizatorul care execută comanda nu are permisiuni de scriere în directorul de lucru, fișierul este creat în directorul de acasă al utilizatorului.

Dacă vă deconectați sau închideți terminalul, procesul nu se încheie.

Executarea comenzii în fundal

Folosirea nohup în prim-plan nu este foarte utilă, deoarece nu veți putea interacționa cu shell-ul până când nu se finalizează comanda.

Pentru a rula comanda în fundal, adăugați simbolul & la sfârșitul comenzii:

nohup mycommand &

Ieșirea include ID-ul de job shell (înconjurat cu paranteze) și ID-ul procesului:

25177

Puteți utiliza ID-ul de lucru pentru a aduce comanda în prim plan folosind comanda fg .

Dacă din anumite motive doriți să încheiați procesul, utilizați comanda kill urmată de ID-ul procesului:

kill -9 25132

Redirecționarea ieșirii către un fișier

În mod implicit, nohup redirecționează ieșirea comenzii către fișierul nohup.out . Dacă doriți să redirecționați ieșirea către un fișier diferit, utilizați redirecția standard a shellului.

De exemplu, pentru a redirecționa ieșirea standard și eroarea standard către mycommand.out ați folosi:

nohup mycommand > mycommand.out 2>&1 &

Pentru a redirecționa ieșirea standard și eroarea standard către fișiere diferite:

nohup mycommand > mycommand.out 2> mycommand.err &

alternative

Există mai multe programe alternative pe care le puteți utiliza pentru a evita ca o comandă să fie încheiată atunci când închideți terminalul sau vă deconectați.

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 vor continua să ruleze chiar dacă închideți terminalul.

renega

disown este un shell integrat care înlătură un job shell de sub controlul jobului shell-ului. Spre deosebire de nohup , puteți utiliza disown pe procesele de rulare.

Concluzie

nohup vă permite să preveniți terminarea comenzilor atunci când vă deconectați sau ieșiți din terminal.

terminalul nohup