Hogyan zárjuk a terminál nélkül megöli indult a csapat

Néha meg kell „elválasztani” a programot a terminál ablak, amelyben fut. Például, ha csatlakozik egy távoli szerveren keresztül SSH, futtatja a feladatot, ami nem egy démon, de a végrehajtását, amely előírja, sok időt (akár napok vagy hónapok). Ha bezárja a terminál vagy csak újraindul a SSH, a futó program egyszerűen leáll.

Egy másik példa az a helyzet, amikor szükség lehet, a munka egy fejetlen szerver (nincs grafikus asztali környezet), és emiatt nem tudja megnyitni több terminál ablakot. Tehát azt szeretnénk, hogy fordítsa le a programot a háttérben továbbra is együttműködik a terminál.

Ez a cikk ismerteti a lehetőségeket, hogyan zárja a terminál megállás nélkül a futó program is.

Ehhez két megoldás van:

Lássuk, de mi a különbség

Nézzük először megnézzük, mi történik, ha a parancs lefut egy interaktív shell (csatlakozik a terminál), anélkül, (És nélküli átirányítás). Tehát tegyük fel, hogy a már begépelt egyszerűen ize (példaként a parancs), akkor:

  • Alkotó folyamat ize.
  • Inherits stdin (standard input), stdout (standard kimenetre) és stderr (standard hiba) a héj. Következésképpen, ez is kapcsolódik ugyanazon a terminálon.
  • Ha a héj kap SIGHUP (jelet küldött a folyamat a veszteséget az értesítést a vezérlő csatlakozások a felhasználói terminál által), akkor is küld SIGHUP folyamat (ami a folyamat általában vezet befejezése).
  • Egyébként héj vár (blokkolva), amíg a folyamat befejeződik.

Most lássuk, mi történik, ha lefordítani a folyamat a háttérben, akkor állítsa ize .

Most megtagad eltávolítja a feladatot a feladat listában shell ezért minden fenti albekezdés lehet alkalmazni (beleértve a küldő shell folyamat SIGHUPl jel). Azonban ne feledjük, hogy továbbra is csatlakozik a terminál, így ha a terminál megsemmisül (ami akkor történhet, ha ez egy Pty, mint azok által létrehozott xtermor vagy ssh. És monitoring program befejeződött záró xterm vagy zárási -Connection SSH) programot sikertelen lesz, amint azt a megtiszteltetés, hogy a szabványos bemenetről olvas és ír a standard kimenetre.

Mi odelaet nohup. Egyrészt, hogy aktívan a folyamatokat elkülöníti a terminál:

Ne feledje, hogy nohup nem távolítja el a folyamatot a vezérlő shell feladatokat is beteszi a háttérben (de nohup feladata az előtérben szinte használhatatlan, akkor általában kezdődik ). Például, ellentétben megtagad. shell is jelezni fogja, ha a feladat befejezése nohup (persze, ha a héjat le nem zárt ezt).

Ha együtt használják, mindhárom megtagad. nohup és . A folyamat futni fog a háttérben, hogy eltávolítják a héjat ellenőrzési feladatok és hatékonyan le a terminál.

nohup utasításokat hajt végre figyelmen kívül hagyva bontja jeleket.

Nohup lehetséges opciókat:

Ha a szabványos bemenet egy terminál, úgy ez a fájl nem olvasható.

Ha a szabványos kimenet egy terminál, a kimenő hozzáadjuk a «nohup.out», ha lehetséges, egyébként «$ HOME / nohup.out».

Ha standard hiba egy terminál, akkor átirányítja a szabványos kimenetre. Írni a kimenetet egy fájlba, használjon «nohup parancs> FILE”.

Megjegyzés: A héj lehet saját verzióját nohup. amely általában kiterjed az itt leírt változatot. Kérjük, olvassa el a dokumentációt a shell megtudni a lehetőségeket támogat.

Megjegyzés alapul források:

Share „Hogyan zárjuk a terminál működési nélkül megöli a csapat”