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.de obicei, când rulați un program prin SSH, dacă conexiunea dvs. scade sau vă deconectați, sesiunea este terminată și toate procesele executate de la terminal se vor opri. Aici vine la îndemână comanda nohup
., Ignoră toate semnalele hangup, iar procesul va continua să ruleze.
Cum să Utilizați Comanda nohup #
sintaxa pentru nohup
comanda este după cum urmează:
nohup COMMAND
comanda nu accepta orice alte opțiuni, cu excepția standard --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ă mycommand
comandă în prim-plan și redirecționează comanda de ieșire la nohup.out
fișier. 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 pornire al utilizatorului.
Dacă vă deconectați sau închideți terminalul, procesul nu este terminat.,
rularea comenzii în Background #
folosindnohup
în prim-plan nu este foarte utilă deoarece nu veți putea interacționa cu shell-ul până când comanda nu se termină.
Pentru a rula de comandă în fundal , adăugați &
simbol de la sfârșitul comanda:
nohup mycommand &
ieșire include shell job ID (înconjurat cu paranteze) și ID-ul de proces:
25177
puteți folosi de locuri de muncă pentru a aduce la comandă în prim-plan folosind fg
comandă.,
Dacă pentru un motiv pe care doriți pentru a termina procesul, folosiți kill
comandă, urmat de ID-ul procesului:
kill -9 25132
Redirecționarea Ieșire într-un Fișier #
în mod implicit, nohup
redirecționează la comanda de ieșire la nohup.out
fișier. Dacă doriți să redirecționați ieșirea într-un fișier diferit, utilizați redirecționarea standard a shell-ului.,
De exemplu, pentru a redirecționa ieșire standard și eroarea standard a mycommand.out
v-ar folosi:
nohup mycommand > mycommand.out 2>&1 &
Pentru a redirecționa ieșire standard și eroarea standard pentru fișiere diferite:
nohup mycommand > mycommand.out 2> mycommand.err &
Alternative #
Există mai multe programe alternative pe care le puteți folosi pentru a evita o comandă să fie încheiată atunci când închideți terminal sau de a lua deconectat.,
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 ecranul GNU. Cu Tmux, puteți crea, de asemenea, o sesiune și deschide mai multe ferestre în interiorul acelei sesiuni. Tmux sesiuni sunt persistente, ceea ce înseamnă că programele care rulează în Tmux va continua să ruleze chiar dacă închideți terminal.,
Disown #
disown
este un shell builtin care elimină un loc de muncă shell de control de locuri de muncă shell. Spre deosebire de nohup
, puteți utiliza disown
și pe procesele care rulează.
concluzie #
nohup
vă permite să împiedicați terminarea comenzilor atunci când vă deconectați sau ieșiți din terminal.