Wéi starten Linux Kommando am Hannergrond an Détach Prozess am Terminal


An dësem Guide wäerte mir en einfacht awer wichtegt Konzept am Prozesshandhabung an engem Linux System an d'Liicht bréngen, dat ass wéi een e Prozess komplett vu sengem Kontrollterminal trennt.

Wann e Prozess mat engem Terminal assoziéiert ass, kënnen zwee Probleemer optrieden:

  1. Äre Kontrollterminal ass mat sou vill Ausgangsdaten a Fehler-/Diagnostikmeldungen gefëllt.
  2. am Fall wou den Terminal zou ass, gëtt de Prozess zesumme mat senge Kannerprozesser ofgeschloss.

Fir mat dësen zwee Themen ze këmmeren, musst Dir e Prozess komplett vun engem Kontrollterminal trennen. Ier mer tatsächlech plënneren fir de Problem ze léisen, loosst eis kuerz iwwerdecken wéi Prozesser am Hannergrond lafen.

Wéi starten ech e Linux Prozess oder Kommando am Hannergrond

Wann e Prozess schonn ausgefouert gëtt, wéi zum Beispill d'Tar Kommando Beispill hei drënner, dréckt einfach Ctrl+Z fir se ze stoppen, gitt dann de Kommando bg fir weider mat senger Ausféierung an der Hannergrond als Aarbecht.

Dir kënnt all Är Hannergrondjobs kucken andeems Dir jobs tippt. Wéi och ëmmer, seng stdin, stdout, stderr sinn nach ëmmer mam Terminal verbonnen.

$ tar -czf home.tar.gz .
$ bg
$ jobs

Dir kënnt och e Prozess direkt aus dem Hannergrond ausféieren mat dem Ampersand, & Zeechen.

$ tar -czf home.tar.gz . &
$ jobs

Kuckt d'Beispill hei drënner, obwuel den Tar Kommando als Hannergrondjob gestart gouf, gouf nach ëmmer eng Fehlermeldung un den Terminal geschéckt, dat heescht datt de Prozess nach ëmmer mam Kontrollterminal verbonnen ass.

$ tar -czf home.tar.gz . &
$ jobs

Halt Linux Prozesser Lafen nodeems se aus dem Terminal erausgoen

Mir wäerten den Disown Kommando benotzen, et gëtt benotzt nodeems de Prozess gestart gouf an am Hannergrond gesat gouf, et ass d'Aarbecht fir e Shell Job aus den aktive Lëscht Jobs ze läschen, dofir benotzt Dir net fg , bg Kommandoen op déi speziell Aarbecht méi.

Zousätzlech, wann Dir de Kontrollterminal zoumaacht, hänkt d'Aarbecht net op oder schéckt e SIGHUP op all Kannerjobs.

Loosst eis d'Beispill hei ënnen kucken fir d'Diswon Bash agebaute Funktioun ze benotzen.

$ sudo rsync Templates/* /var/www/html/files/ &
$ jobs
$ disown  -h  %1
$ jobs

Dir kënnt och de Kommando nohup benotzen, wat et och erlaabt datt e Prozess weider am Hannergrond leeft wann e Benotzer aus enger Shell kënnt.

$ nohup tar -czf iso.tar.gz Templates/* &
$ jobs

Trennt e Linux Prozesser vum Controlling Terminal

Dofir, fir e Prozess komplett vun engem Kontrollterminal ze trennen, benotzt de Kommandoformat hei ënnen, dëst ass méi effektiv fir grafesch User Interface (GUI) Uwendungen wéi Firefox:

$ firefox </dev/null &>/dev/null &

Am Linux ass /dev/null eng speziell Gerätsdatei, déi all Donnéeën ofgeschriwwe gëtt (kréien) ofgeschriwwe ginn, am Kommando uewendriwwer gëtt den Input gelies, an d'Ausgab gëtt op /dev/null geschéckt.

Als Ofschlossbemierkung, virausgesat datt e Prozess mat engem Kontrollterminal verbonne gëtt, als Benotzer, gesitt Dir e puer Ausgangslinne vun de Prozessdaten souwéi Fehlermeldungen op Ärem Terminal. Nach eng Kéier, wann Dir de Kontrollterminal zoumaacht, ginn Äre Prozess a Kandprozesser ofgeschloss.

Wichteg ass, fir all Froen oder Bemierkungen zum Thema, erreechen eis andeems Dir de Kommentarformular hei drënner benotzt.