Ha Ön Linux-fejlesztő, tudja, milyen fontos a munkamenetei konzisztenciája és megbízhatósága. A Linuxban régóta futó folyamatoknak azután is folytatniuk kell, hogy Ön kijelentkezett a munkamenetből. Szerencsére a Linuxnak van egy funkcionális parancsa erre a célra. A nohup parancs lehetővé teszi a parancsok megszakítás nélküli futtatását a háttérben. Így megelőzi az adatvesztést és értékes időt takarít meg. Ez az útmutató végigvezeti Önt mindenen, amit a Linux nohup parancsról tudnia kell, a szintaxistól és a beállításoktól a gyakorlati példákig és a gyakori hibák hibaelhárításáig.
A Linux nohup szintaxis megértése
A nohup parancs könnyen használható és egyértelmű. Lehetővé teszi, hogy parancsokat vagy szkripteket futtasson a háttérben, így biztos lehet benne, hogy továbbra is futnak, még akkor is, ha kijelentkezik a terminálból. A következőképpen használhatja:
nohup [command] [arguments] &
Cserélnie kellene [parancs] a futtatni kívánt paranccsal vagy szkripttel. És [érv] a parancs által megkövetelt bármely argumentum vagy opció. A & szimbólum elküldi a parancsot, hogy futtasson a háttérben. Lássunk egy példát:
nohup myscript.sh &
Ebben a példában myscript.sh egy bash szkript, amely akkor is fut, ha bezárja a terminált. A kimenet át lesz irányítva egy nevű fájlba nohup.out alapértelmezés szerint, hacsak nem ad meg másik elérési utat.
A nohup opciók felfedezése
Bár magának a nohup parancsnak nincs sok opciója, a különböző parancsokkal és átirányítási technikákkal való hatékony használatának megértése javíthatja a teljesítményét. Először nézzük meg, hogyan szerezhetünk információkat a nohup parancsról:
nohup –-help nohup --version
Ez a két parancs hasznos információkkal szolgál a súgóüzenet és a nohup verziójának megjelenítésével.
Folyamat futtatása a nohup paranccsal
Ha egy folyamatot a nohup paranccsal szeretne futtatni, akkor ugyanazt a struktúrát követheti, amelyet az előző részben leírtam:
nohup [command]
Ha egy folyamatot szeretne futtatni a háttérben, csak adja hozzá & a parancsod végéig.
Több folyamat futtatása a háttérben a nohup paranccsal
Mi van akkor, ha egynél több folyamatot szeretne futtatni a háttérben a nohup paranccsal?
nohup bash -c '[command A] && [command B]' &
Cserélje ki [A parancs] és [B parancs] a háttérben futtatni kívánt parancsokkal. Képzelje el, hogy először frissíteni szeretné a rendszercsomagokat, majd megtisztítja a szükségtelen fájlokat, és ezt a nohup paranccsal szeretné megtenni:
nohup bash -c 'sudo apt-get update && sudo apt-get autoremove -y' &
Ebben a példában nohup lehetővé teszi, hogy a frissítési és tisztítási folyamatok továbbra is futjanak a háttérben. Így a rendszerkarbantartási feladatai a terminál nyitva tartása nélkül végezhetők el.
Az egyéni kimenet átirányítása
Ennek a folyamatnak a kimenete át lesz irányítva ide nohup.out alapértelmezés szerint. De mi van akkor, ha egy másik úton szeretné megkapni a kimenetet? Ezt a következőképpen teheti meg:
nohup [command] > [/path/to/new/output.txt]
Ne felejtse el lecserélni az értékeket [] a kívánt paranccsal és fájlútvonallal.
A nohup kombinálása más parancsokkal
A nohup kombinálható más parancsokkal és csövekkel, hogy hatékony parancsláncokat hozzon létre. Lássunk erre egy példát:
nohup find / -name "*.log" | xargs grep "ERROR" > error_logs.txt 2>&1 &
Itt, a lelet parancs a naplófájlok keresésére szolgál, és grep a „HIBA” kifejezés keresésére szolgál. A kombinált kimenet ide kerül átirányításra error_logs.txt.
Ebben a részben a nohup parancs leggyakoribb beállításait és használati eseteit ismertettük. Ezen utasítások elsajátításával hatékonyan használhatja a nohup-ot Linux-folyamatok háttérben történő futtatására.
Gyakori hibák és hibaelhárítás
A nohup parancs használata általában egyszerű, de előfordulhat néhány gyakori hiba a folyamat során. Ha megérti ezeket a hibákat, és ismeri a hibaelhárításuk módját, időt és frusztrációt takaríthat meg. Lássuk tehát, melyek ezek a gyakori hibák, és hogyan kell eligazodni bennük:
Engedély megtagadva
Ez a hiba akkor fordul elő, ha a futtatni kívánt parancsfájl vagy parancs nem rendelkezik végrehajtási engedéllyel. A hiba kimenete így néz ki: nohup: nem sikerült futtatni a „myscript.sh” parancsot: Engedély megtagadva
A probléma megoldásához meg kell győződnie arról, hogy a szkript vagy parancs megfelelő engedélyekkel rendelkezik. Végrehajtási engedélyt adhat hozzá a chmod parancs:
chmod +x myscript.sh nohup ./myscript.sh &
A parancs nem található
Ez a hiba akkor fordul elő, ha a parancs vagy a parancsfájl nem található a megadott helyen, vagy nem érhető el a PATH-ban. A hiba kimenete így néz ki: nohup: nem sikerült futtatni a „myscript.sh” parancsot: Nincs ilyen fájl vagy könyvtár
A hiba megoldásához ellenőrizze, hogy a parancs vagy parancsfájl létezik-e, és a megfelelő könyvtárban van-e. Lehet, hogy meg kell adnia a szkript abszolút elérési útját:
nohup /path/to/myscript.sh &
Győződjön meg arról is, hogy a parancs telepítve van és elérhető a PATH-ban.
Nincs kimenet
Néha észreveheti, hogy nincs kimenet a terminálban vagy a kimeneti fájlban. Ha a parancs kimenetet ad, de nem látja, akkor lehet, hogy az alapértelmezett fájltól eltérő útvonalra irányítja át, vagy probléma lehet a fájlengedélyekkel. A probléma megoldásához kifejezetten meg kell adnia a kimeneti fájlt, hogy biztosítsa a helyes átirányítást:
nohup myscript.sh > output.log 2>&1 &
Példaként ez a parancs a szabványos kimenetet és a szabványos hibát is átirányítja egy nevű fájlba output.log.
A szkript nem fut a háttérben
Néha úgy tűnik, hogy a szkript vagy parancs fut, de nem a háttérben. Az ok általában egyszerű. Lehet, hogy elfelejtette hozzáadni a & szimbólumot a parancs végén, hogy a háttérben futtassa. A megoldás is egyszerű, csak győződjön meg róla, hogy ezt hozzáadta, és kész.
Lefagyott vagy nem reagáló folyamat
A nohup-pal elindított folyamat lefagyhat vagy nem reagál. Ez akkor fordulhat elő, ha a folyamat bevitelre vár, vagy ha problémák vannak az elérni kívánt erőforrásokkal. A problémára két megoldás létezik:
- Ellenőrizze a szükséges bevitelt: Győződjön meg arról, hogy a parancs nem igényel interaktív bevitelt.
- Erőforrásokkal kapcsolatos problémák: Ellenőrizze, hogy a parancs hozzáfér-e a szükséges erőforrásokhoz (például fájlok, hálózat).
A nohup.out felülírása
Ha több folyamatot futtat a háttérben a nohup paranccsal, akkor véletlenül felülírhatja a nohup.out fájlt. A probléma elkerülése érdekében minden folyamathoz kiválaszthat egy adott útvonalat. Így minden folyamatnak egyedi kimeneti fájlja van, és az alapértelmezett elérési út nem kerül felülírásra.
Ha megismeri a gyakori nohup hibát és azok megoldásait, gond nélkül használhatja a nohup parancsot.
Következtetés
A nohup parancs nagyszerű eszköz minden Linux-felhasználó számára, akinek folyamatokat kell futtatnia a háttérben, mert biztosítja, hogy a folyamatok a kijelentkezés után is fussanak. Ebben az útmutatóban bemutattuk az alapvető szintaxist, megvizsgáltuk a különböző lehetőségeket, és megvitattuk a gyakori hibákat, valamint hibaelhárítási tippeket. A nohup parancs elsajátítása lehetővé teszi a régóta futó feladatok hatékony kezelését, ami javítja a termelékenységet és a rendszerkezelési készségeket.
Ha Ön Linux-fejlesztő, aki szeretné maximalizálni Linux-élményét, fontolja meg a frissítést egy megbízhatóra Linux VPS. Felhőalapú VPS szolgáltatásunk 24 órás támogatást és 99,95%-os rendelkezésre állási garanciát kínál, ami azt jelenti, hogy alkalmazásai mindig zökkenőmentesen futnak, és a nap bármely szakában kaphat segítséget. Robusztus infrastruktúrájával és megbízható erőforrásaival VPS-ünket úgy tervezték, hogy megfeleljen a Linux-programozók igényeinek. Ráadásul a kívánt Linux disztribúciót előre telepítheti, így a beállítás gyors és egyszerű. Emelje Linux-projektjeit a következő szintre egy olyan VPS-sel, amely biztosítja a szükséges teljesítményt és rugalmasságot.
GYIK
Mi a különbség között nohup és &?
nohup megakadályozza a folyamat leállítását, amikor a felhasználó kijelentkezik, miközben & folyamatot futtat a háttérben. Használata nohup biztosítja, hogy a folyamat folytatódjon a kijelentkezés után és azzal kombinálva & lehetővé teszi a háttérben való futását.
Miért használják a nohupot?
nohup Arra szolgál, hogy megbizonyosodjon arról, hogy egy parancs vagy szkript fut még a felhasználó kijelentkezése vagy a terminál bezárása után is. Elengedhetetlen a hosszan futó folyamatokhoz, amelyeknek felhasználói beavatkozás nélkül kell aktívak maradniuk.
Mi az a nohup out fájl?
A nohup.out fájl az alapértelmezett kimeneti fájl, ahol a nohup átirányítja a parancs szabványos kimenetét és szabványos hibáját. Ha nincs más kimeneti fájl megadva, a parancs kimenete a következő helyre kerül mentésre nohup.out az aktuális könyvtárban.