Kuinka käynnistää Linux-komento taustalla ja irrottaa prosessi terminaalista


Tässä oppaassa tuomme esille yksinkertaisen mutta tärkeän konseptin prosessinkäsittelyssä Linux-järjestelmässä, eli miten prosessi voidaan irrottaa kokonaan sen ohjauspääteestä.

Kun prosessi liittyy päätelaitteeseen, voi esiintyä kaksi ongelmaa:

  1. ohjaava päätelaiteesi on täynnä niin paljon lähtötietoja ja virhe-/diagnostiikkaviestejä.
  2. jos pääte on suljettu, prosessi ja sen aliprosessit lopetetaan.

Näiden kahden ongelman käsittelemiseksi sinun on irrotettava prosessi kokonaan ohjaavasta päätelaitteesta. Ennen kuin ryhdymme todella ratkaisemaan ongelmaa, käsittelemme lyhyesti kuinka prosessit suoritetaan taustalla.

Kuinka aloittaa Linux-prosessi tai komento taustalla

Jos jokin prosessi on jo suoritettu, kuten alla oleva tar-komentoesimerkki, lopeta se painamalla Ctrl + Z ja kirjoittamalla komento bg jatkaaksesi sen suorittamista tausta työpaikkana.

Voit tarkastella kaikkia taustatyöt kirjoittamalla työt . Sen stdin, stdout, stderr on kuitenkin edelleen liitetty päätteeseen.

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

Voit myös suorittaa prosessin suoraan taustasta käyttämällä ampersandia, & -merkkiä.

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

Katsotaanpa alla olevaa esimerkkiä, vaikka tar-komento aloitettiin taustatyönä, päätelaitteelle lähetettiin edelleen virheilmoitus, eli prosessi on edelleen kytketty ohjaavaan päätelaitteeseen.

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

Pidä Linux-prosessit käynnissä päätteestä poistumisen jälkeen

Käytämme disown -komentoa, sitä käytetään sen jälkeen, kun prosessi on käynnistetty ja asetettu taustalle, sen tehtävä on poistaa shell-työ shellin aktiivisista luettelotöistä, joten et käytä fg , bg -komennot kyseiselle työlle enää.

Lisäksi kun suljet ohjauspäätelaitteen, työ ei roiku tai lähetä SIGHUPia mihinkään lapsityöhön.

Tarkastellaan alla olevaa esimerkkiä diswon bash -rakennetun toiminnon käytöstä.

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

Voit myös käyttää nohup -komentoa, joka mahdollistaa myös prosessin jatkamisen taustalla, kun käyttäjä poistuu kuoresta.

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

Irrota Linux-prosessit ohjauspäätteestä

Siksi voit irrottaa prosessin kokonaan ohjaavasta päätelaitteesta käyttämällä alla olevaa komentomuotoa. Tämä on tehokkaampaa graafisen käyttöliittymän (GUI) sovelluksissa, kuten Firefox:

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

Linuxissa/dev/null on erityinen laitetiedosto, joka poistaa kaikki siihen kirjoitetut tiedot (päästä eroon), yllä olevassa komennossa syötteet luetaan ja tulos lähetetään/dev/null.

Loppuhuomautuksena, edellyttäen että prosessi on kytketty ohjaavaan päätelaitteeseen, näet käyttäjänä käyttäjänä useita prosessidatan ulostulorivejä sekä virheilmoituksia. Jälleen kerran, kun suljet ohjaavan päätelaitteen, prosessi ja aliprosessit lopetetaan.

Tärkeää on, että jos sinulla on kysyttävää aiheesta, ota meihin yhteyttä alla olevan kommenttilomakkeen avulla.