50% sleva všechny plány, omezený čas. Začátek v $2.48/mo
Zbývá 8 min
Servery a OS

Jak příkaz nohup funguje v Linuxu – syntaxe, případy použití a příklady

Ada Lovegoodová By Ada Lovegoodová 8 min čtení Aktualizováno 14. července 2024
příkaz nohup

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.

Podíl

Více z blogu

Pokračujte ve čtení.

Nejlepší aplikace s vlastním hostováním, které můžete spouštět s Cosmos Cloudem na úvodním obrázku s panely aplikací kolem řídicího panelu Cosmos.
Servery a OS

Nejlepší samoobslužné aplikace, které můžete provozovat s Cosmos Cloud: Soubory, média, hesla, automatizace a další!

Možná jste si nastavili Cosmos Cloud a nyní chcete vidět, jaké aplikace s ním dobře ladí, nebo jste se možná ještě ani nerozhodli pro Cosmos a chcete jen zjistit, jak dobře se hodí k vaší práci

Nick SilverNick Silver 16 minut čtení
Kryt Porttainer vs Cosmos Cloud pro správu Docker Apps s hybridním schématem nastavení a neonovými operacemi vs přístupovými bloky.
Servery a OS

Portainer vs Cosmos Cloud: Nejlepší řešení pro správu aplikací Docker

Pokud již znáte Docker a chcete pouze čistší způsob, jak provozovat rostoucí zásobník aplikací, zde je krátká odpověď na Porttainer vs Cosmos Cloud. Porttainer je silnější volbou pro direc

Nick SilverNick Silver 14 minut čtení
Hlavní grafika Cosmos Cloud vs CasaOS vs Umbrel ukazuje tři samostatně hostované cesty uvnitř jednoho abstraktního světa cloudové sítě.
Servery a OS

Cosmos Cloud vs CasaOS vs Umbrel: Která platforma s vlastním hostitelem vyhovuje vašemu nastavení?

Krátká odpověď zní, že CasaOS je stále tím nejjednodušším místem, kde začít, Umbrel má nejčistší kurátorský pocit a Cosmos Cloud dává větší smysl, jakmile budete chtít přísnější kontrolu nad doménou

Nick SilverNick Silver 11 minut čtení

Jste připraveni k nasazení? Od 2,48 $ měsíčně.

Nezávislý cloud, od roku 2008. AMD EPYC, NVMe, 40 Gbps. 14denní vrácení peněz.