Folyamat küldése háttér Linuxra

Send Process Background Linux



Amikor grafikus asztali környezetekkel dolgozunk, ritkán aggódunk a háttérfolyamatok miatt. Ha egy folyamat fut az előtérben, gyorsan létrehozhatunk egy másik terminálablakot, és folytathatjuk a munkát.

Ha azonban nyers terminálhéjban van, mint például az SSH, gyakran aggódni fog a folyamatok miatt, amelyek elfoglalják és blokkolják a héjat, amíg azok befejeződnek, különösen a régóta futó feladatoknál. Ez az, ahol a háttér és az előtérben zajló folyamatok fogalma játszik szerepet.







Ez az oktatóanyag megvitatja, hogy mik a háttér- és előtérfolyamatok, beleértve azok létrehozását és kezelését Linuxon.



Mi az a folyamat?

Engedje meg, hogy az alapszinten kezdjem: mi az a folyamat?



Linux alatt a folyamat egy program példánya. Jellemzően ez azt jelenti, hogy a parancsban levő parancsok vagy végrehajtható folyamatok.





Főleg kétféle folyamat létezik:

  • Előtérbeli folyamatok
  • Háttérfolyamatok

Az előtérbeli folyamatok főleg tipikus alkalmazások, amelyeket elindítunk és kölcsönhatásba lépünk velük. Ilyen például a nautilus fájlkezelő a Gnome -ban. A legtöbb esetben az előtérbeli folyamatokat a héjból vagy az asztali környezetből indíthatjuk el.



Másrészt a háttérfolyamatok a háttérben futnak, és nem igényelnek semmilyen bevitelt vagy beavatkozást a felhasználó részéről. Példa lehet bármilyen tipikus Linux démon.

Hogyan lehet futtatni egy folyamatot a háttérben

Tegyük fel, hogy van egy folyamatunk, amely futás közben elfoglalja a shell munkamenetet, és megakadályozza a parancsok végrehajtását, amíg kilép.

Például, ha a Firefox böngészőt a héjban futtatjuk, az a folyamat befejezéséig foglalja el a munkamenetet.

$firefox


Amint láthatja, amíg a Firefox fut, a shell parancs nem érhető el, és nem tudunk több parancsot végrehajtani.

Ennek megoldásához kétféleképpen tehetjük:

1: Ampersand (&) használata

Az első módszer az ampersand & jel használata. Ez azt mondja a héjnak, hogy futtassa azt a parancsot, amely megelőzi a háttérben lévő ampersandot.

Egy példa:

firefox&

Ilyen esetben a folyamat a háttérben fut, és új shell parancsként jelenik meg, amely lehetővé teszi számunkra a parancsok végrehajtását.

Ezenkívül két numerikus azonosítót is megad. Az első szögletes zárójelben található a feladat azonosítója, míg a következő a folyamat azonosítója.

2: A CTRL + Z, bg parancs használatával.

A következő módszer, amellyel egy folyamatot háttérbe helyezhet, a CTRL + Z billentyűparancs használata. Ez megakadályozza, hogy a folyamat blokkolja a héjat. Ezután a bg paranccsal háttérbe szoríthatja azt.

Kezdje például a Firefox indításával:

$Firefox

Amíg a folyamat fut, nyomja meg a CTRL + Z billentyűkombinációt. Ez visszaadja a shell parancsot. Végül írja be a bg parancsot a folyamat háttérbe szorításához.

Háttérfolyamatok megjelenítése

A folyamatok háttérben történő megtekintéséhez és kezeléséhez használja a shell parancs job parancsát. Ez megmutatja a háttérmunkákat az aktuális terminál munkamenetben.

Például:

$munkahelyeket

Példa a háttérmunkák kimenetére:

A háttérben futó folyamat előtérbe helyezéséhez használja az fg parancsot, majd a jobazonosítót.

Például a firefox feladat előtérbe helyezéséhez a következő parancsot használjuk:

$fg %1

A háttérbe helyezéshez nyomja meg a CTRL + Z billentyűkombinációt, majd a bg parancsot.

Hogyan lehet a folyamatot tartósá tenni a héj halála után

Amikor folyamatokat futtat a háttérben, és a shell munkamenete meghal, a hozzá tartozó összes folyamat leáll, ami problémás lehet, különösen, ha SSH munkamenetről van szó.

Ez azonban nem túl nagy probléma, ha terminál multiplexert, például tmux -t vagy képernyőt használ, mert ebben az esetben egyszerűen csatlakoztathatja a munkamenetet.

Ha azonban egy shell munkamenetet multiplexer nélkül futtat, akkor használhatja a nohup parancsot.

A nohup parancs mentes a leállásoktól, és figyelmen kívül hagyhatja a folyamathoz küldött SIGHUP jelet.

Ezért, ha egy parancsot nohup segítségével futtat, akkor továbbra is fut, még akkor is, ha a shell munkamenet véletlenül meghal.

Például a Firefox nohup futtatásához használja a következő parancsot:

nohupFirefox&

Ez a folyamatot a háttérben futtatja, miközben a héj leáll.

Futtathat egy új terminál szekciót, és megtekintheti a háttérmunkákat. Látni fogja, hogy a folyamat továbbra is fut a háttérben.

Következtetés

Ebben az oktatóanyagban a folyamatok futtatásának és háttérre küldésének különböző módjairól beszéltünk Linuxon. Arra is kitértünk, hogyan lehet háttérfolyamatot háttérbe szorítani, és a kagyló megszűnésekor leállni.