Kaip paleisti „Linux“ komandą fone ir atjungti procesą terminale
Šiame vadove mes atskleisime paprastą, tačiau svarbią procesų tvarkymo „Linux“ sistemoje koncepciją, tai yra, kaip visiškai atsieti procesą nuo jo valdančio terminalo.
Kai procesas yra susietas su terminalu, gali kilti dvi problemos:
- jūsų valdymo terminalas užpildytas tiek daug išvesties duomenų ir klaidų/diagnostikos pranešimų.
- tuo atveju, jei terminalas bus uždarytas, procesas kartu su antriniais procesais bus nutrauktas.
Norėdami išspręsti šias dvi problemas, turite visiškai atsieti procesą nuo valdančio terminalo. Prieš pradėdami spręsti problemą, trumpai apžvelkime, kaip vykdyti procesus fone.
Kaip pradėti Linux procesą ar komandą fone
Jei procesas jau vykdomas, pvz., Žemiau pateiktas tar komandos pavyzdys, tiesiog paspauskite Ctrl + Z
, kad jį sustabdytumėte, tada įveskite komandą bg
, kad tęstumėte jo vykdymą fonas kaip darbas.
Visus savo foninius darbus galite peržiūrėti įvesdami job
. Tačiau jo stdin, stdout, stderr vis dar yra prijungti prie terminalo.
$ tar -czf home.tar.gz . $ bg $ jobs
Taip pat galite paleisti procesą tiesiai iš fono naudodami ženklą „ampersand“, „“ ir „
“.
$ tar -czf home.tar.gz . & $ jobs
Pažvelkite į žemiau pateiktą pavyzdį, nors komanda tar buvo pradėta naudoti kaip foninė užduotis, terminalui vis tiek buvo išsiųstas klaidos pranešimas, o tai reiškia, kad procesas vis dar yra prijungtas prie valdančio terminalo.
$ tar -czf home.tar.gz . & $ jobs
Laikykite „Linux“ procesus veikiančius išėjus iš terminalo
Mes naudosime komandą atsisakyti, ji naudojama paleidus procesą ir patekus į antrą planą. Tai yra pašalinti apvalkalo užduotį iš aktyvių apvalkalo sąrašo užduočių, todėl nenaudosite fg
, bg
komandos jau atlieka tą konkretų darbą.
Be to, uždarius kontrolinį terminalą, darbas nebus pakabintas ir neišsiųstas SIGHUP į jokius vaiko darbus.
Pažvelkime į žemiau pateiktą „diswon bash“ integruotos funkcijos naudojimo pavyzdį.
$ sudo rsync Templates/* /var/www/html/files/ & $ jobs $ disown -h %1 $ jobs
Taip pat galite naudoti komandą nohup
, kuri taip pat įgalina procesą tęsti fone, kai vartotojas išeina iš apvalkalo.
$ nohup tar -czf iso.tar.gz Templates/* & $ jobs
Atjunkite „Linux“ procesus nuo valdymo terminalo
Todėl, norėdami visiškai atsieti procesą nuo valdančio terminalo, naudokite toliau pateiktą komandų formatą, tai yra efektyviau grafinių vartotojo sąsajų (GUI) programoms, tokioms kaip „Firefox“:
$ firefox </dev/null &>/dev/null &
„Linux“ sistemoje/dev/null yra specialus įrenginio failas, kuris nurašo (atsikrato) visus į jį įrašytus duomenis, aukščiau esančioje komandoje įvestis nuskaitoma, o išvestis siunčiama į/dev/null.
Kaip baigiamoji pastaba, su sąlyga, kad procesas yra prijungtas prie valdymo terminalo, kaip vartotojas, jūs matysite keletą proceso duomenų išvesties linijų, taip pat klaidų pranešimus savo terminale. Vėlgi, uždarius kontrolinį terminalą, jūsų ir antriniai procesai bus nutraukti.
Svarbu, kad iškilus klausimams ar pastaboms šia tema susisiekite su mumis naudodamiesi toliau pateikta komentarų forma.