Pokud jste vývojář Linuxu, víte, jak je důležitá konzistentnost a spolehlivost vašich relací. Dlouho běžící procesy v Linuxu musí pokračovat i po odhlášení z relace. Naštěstí má Linux pro tento účel funkční příkaz. The příkaz nohup umožňuje ponechat příkazy spuštěné bez přerušení na pozadí. Předchází se tak ztrátě dat a šetří drahocenný čas. Tato příručka vás provede vším, co potřebujete vědět o příkazu nohup pro Linux, od jeho syntaxe a možností až po praktické příklady a odstraňování běžných chyb.
Pochopení syntaxe Linux nohup
Příkaz nohup je snadno použitelný a přímočarý. Umožňuje vám spouštět příkazy nebo skripty na pozadí, takže máte jistotu, že budou pokračovat i po odhlášení z terminálu. Postup použití:
nohup [command] [arguments] &
Měli byste vyměnit [příkaz] s příkazem nebo skriptem, který chcete spustit. A [argument] jsou všechny argumenty nebo volby požadované příkazem. The & symbol odešle příkaz ke spuštění na pozadí. Podívejme se na příklad:
nohup myscript.sh &
V tomto příkladu myscript.sh je bash skript, který bude pokračovat v běhu, i když zavřete terminál. Výstup bude přesměrován do souboru s názvem nohup.out ve výchozím nastavení, pokud nezadáte jinou cestu.
Prozkoumání možností nohup
I když samotný příkaz nohup nemá mnoho možností, pochopení, jak jej efektivně používat s různými příkazy a technikami přesměrování, může zvýšit jeho výkon. Nejprve se podívejme, jak můžeme získat informace o příkazu nohup:
nohup –-help nohup --version
Tyto dva příkazy vám poskytnou užitečné informace zobrazením zprávy nápovědy a verze nástroje nohup.
Spuštění procesu pomocí příkazu nohup
Pokud chcete spustit proces pomocí příkazu nohup, můžete postupovat podle stejné struktury, kterou jsem vysvětlil v minulé části:
nohup [command]
Pokud chcete spustit proces na pozadí, stačí přidat & do konce vašeho příkazu.
Spuštění více procesů na pozadí pomocí příkazu nohup
Co když nyní chcete spustit více než jeden proces na pozadí pomocí příkazu nohup?
nohup bash -c '[command A] && [command B]' &
Nahradit [příkaz A] a [příkaz B] s příkazy, které chcete spouštět na pozadí. Představte si, že chcete nejprve aktualizovat systémové balíčky a poté vyčistit nepotřebné soubory a chcete to provést pomocí příkazu nohup:
nohup bash -c 'sudo apt-get update && sudo apt-get autoremove -y' &
V tomto příkladu nohup umožňuje, aby procesy aktualizace i čištění nadále běžely na pozadí. Úlohy údržby systému jsou tedy dokončeny, aniž byste museli nechat terminál otevřený.
Přesměrování vlastního výstupu
Výstup tohoto procesu bude přesměrován na nohup.out standardně. Co když ale chcete výstup přijímat jinou cestou? Můžete to udělat takto:
nohup [command] > [/path/to/new/output.txt]
Nezapomeňte nahradit hodnoty v [] s požadovaným příkazem a cestou k souboru.
Kombinace nohup s dalšími příkazy
Nohup lze kombinovat s dalšími příkazy a kanály a vytvořit tak výkonné příkazové řetězce. Podívejme se na příklad:
nohup find / -name "*.log" | xargs grep "ERROR" > error_logs.txt 2>&1 &
Tady, nalézt příkaz se používá k vyhledávání souborů protokolu a grep se používá k hledání výrazu „CHYBA“. Kombinovaný výstup je přesměrován na error_logs.txt.
V této části jsme probrali nejběžnější možnosti a případy použití příkazu nohup. Zvládnutím těchto pokynů můžete efektivně používat nohup pro spouštění procesů Linuxu na pozadí.
Běžné chyby a odstraňování problémů
Použití příkazu nohup je obecně jednoduché, ale během procesu se můžete setkat s některými běžnými chybami. Pochopení těchto chyb a znalost jejich odstraňování vám může ušetřit čas a frustraci. Pojďme se tedy podívat, jaké jsou tyto běžné chyby a jak se v nich orientovat:
Povolení odepřeno
K této chybě dochází, když skript nebo příkaz, který se pokoušíte spustit, nemá oprávnění ke spuštění. Výstup chyby vypadá takto: nohup: nepodařilo se spustit příkaz 'myscript.sh': Oprávnění odepřeno
Chcete-li tento problém vyřešit, musíte se ujistit, že skript nebo příkaz má správná oprávnění. Oprávnění ke spuštění můžete přidat pomocí chmod příkaz:
chmod +x myscript.sh nohup ./myscript.sh &
Příkaz nenalezen
K této chybě dochází, pokud příkaz nebo skript není nalezen v zadaném umístění nebo není dostupný ve vaší PATH. Výstup chyby vypadá takto: nohup: nepodařilo se spustit příkaz 'myscript.sh': Žádný takový soubor nebo adresář
Chcete-li tuto chybu vyřešit, měli byste ověřit, že příkaz nebo skript existuje a je ve správném adresáři. Možná budete muset zadat absolutní cestu ke skriptu:
nohup /path/to/myscript.sh &
Také se ujistěte, že je příkaz nainstalován a dostupný ve vaší PATH.
Žádný výstup
Někdy si můžete všimnout, že v terminálu nebo ve výstupním souboru není žádný výstup. Pokud příkaz vytváří výstup, ale vy jej nevidíte, může být přesměrován na jinou cestu, než je výchozí soubor, nebo může nastat problém s oprávněními k souboru. Chcete-li tento problém vyřešit, musíte explicitně zadat výstupní soubor, aby bylo zajištěno správné přesměrování:
nohup myscript.sh > output.log 2>&1 &
Tento příkaz například přesměruje standardní výstup i standardní chybu do souboru s názvem output.log.
Skript neběží na pozadí
Někdy se zdá, že váš skript nebo příkaz běží, ale ne na pozadí. Důvod je většinou jednoduchý. Možná jste zapomněli přidat & symbol na konci příkazu pro jeho spuštění na pozadí. Řešení je také jednoduché, jen se ujistěte, že jste to přidali a můžete začít.
Zavěšení nebo nereagující proces
Proces spuštěný pomocí nohup může přestat reagovat nebo přestat reagovat. K tomu může dojít, pokud proces čeká na vstup nebo pokud existují problémy se zdroji, ke kterým se pokouší získat přístup. Existují dvě řešení tohoto problému:
- Zkontrolujte požadovaný vstup: Ujistěte se, že příkaz nevyžaduje žádný interaktivní vstup.
- Problémy se zdroji: Ověřte, zda má příkaz přístup k nezbytným zdrojům (např. soubory, síť).
Přepsání nohup.out
Pokud na pozadí spouštíte více procesů pomocí příkazu nohup, můžete neúmyslně přepsat nohup.out soubor. Chcete-li se tomuto problému vyhnout, můžete pro každý proces vybrat konkrétní cestu. Tímto způsobem má každý proces svůj jedinečný výstupní soubor a výchozí cesta není přepsána.
Když se seznámíte s běžnou chybou nohup a jejich řešeními, můžete příkaz nohup bez problémů používat.
Závěr
Příkaz nohup je skvělým nástrojem pro každého uživatele Linuxu, který potřebuje spouštět procesy na pozadí, protože zajišťuje, že vaše procesy běží i po odhlášení. V této příručce jsme probrali základní syntaxi, prozkoumali různé možnosti a diskutovali o běžných chybách spolu s tipy pro odstraňování problémů. Zvládnutí příkazu nohup vám umožňuje efektivně spravovat dlouhotrvající úlohy, což zvyšuje vaši produktivitu a dovednosti v oblasti správy systému.
Pokud jste vývojář Linuxu, který chce maximalizovat své zkušenosti s Linuxem, zvažte upgrade na spolehlivý Linux VPS. Naše cloudová služba VPS nabízí nepřetržitou podporu a 99,95% záruku dostupnosti, což znamená, že vaše aplikace běží vždy hladce a kdykoli během dne můžete získat pomoc. Díky robustní infrastruktuře a spolehlivým zdrojům je naše VPS navrženo tak, aby splňovalo požadavky linuxových programátorů. Navíc můžete mít svou preferovanou distribuci Linuxu předinstalovanou, takže nastavení je rychlé a snadné. Posuňte své linuxové projekty na další úroveň s VPS, které poskytuje výkon a flexibilitu, kterou potřebujete.
FAQ
Jaký je rozdíl mezi nohup a &?
nohup zabraňuje ukončení procesu, když se uživatel odhlásí & spustí proces na pozadí. Použití nohup zajišťuje, že proces pokračuje i po odhlášení a jeho zkombinování s & umožňuje běh na pozadí.
Proč se nohup používá?
nohup se používá k zajištění toho, aby příkaz nebo skript pokračoval v běhu i po odhlášení uživatele nebo zavření terminálu. Je nezbytný pro dlouhotrvající procesy, které musí zůstat aktivní bez zásahu uživatele.
Co je soubor nohup out?
The nohup.out file je výchozí výstupní soubor, kde nohup přesměruje standardní výstup a standardní chybu příkazu. Pokud není zadán žádný jiný výstupní soubor, výstup příkazu se uloží do nohup.out v aktuálním adresáři.