Sleva 50% všechny plány, časově omezená nabídka. Od $2.48/mo
8 min zbývá
Servery a OS

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

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

Jako vývojář Linux víte, jak důležitá je konzistence a spolehlivost vašich relací. Dlouhodobě běžící procesy v Linux musí pokračovat i poté, co se odhlásíte. Naštěstí Linux na to má vhodný příkaz. Příkaz nohup příkaz vám umožní spouštět příkazy bez přerušení na pozadí. Tímto způsobem předchází ztrátě dat a šetří váš čas. Tato příručka vás provede vším, co potřebujete vědět o příkazu nohup v Linux, od jeho syntaxe a možností až po praktické příklady a řešení běžných chyb.

Syntaxe příkazu nohup v Linux

Příkaz nohup je jednoduchý a přímočarý. Umožňuje vám spouštět příkazy nebo skripty na pozadí a být si jistí, že se budou provádět i poté, co se odhlásíte z terminálu. Tady je návod, jak ho používat:

nohup [command] [arguments] &

Měli byste nahradit [command] příkazem nebo skriptem, který chcete spustit. A [argument] jsou všechny argumenty nebo možnosti, které příkaz potřebuje. Symbol & odešle příkaz ke spuštění na pozadí. Podívejte 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 pojmenovaného nohup.out standardně, pokud neurčíte jinou cestu.

Možnosti příkazu nohup

Přestože příkaz nohup sám má jen málo možností, pochopení toho, jak ho efektivně používat s různými příkazy a technikami přesměrování, může zlepšit jeho výkon. Nejdřív 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 nápovědy a verze 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 předchozí části:

nohup [command]

Pokud chcete spustit proces na pozadí, stačí přidat & na konec příkazu.

Spuštění více procesů na pozadí pomocí příkazu nohup

Co když chcete spustit více než jeden proces na pozadí pomocí příkazu nohup?

nohup bash -c '[command A] && [command B]' &

Nahradit [command A] a [command B] s příkazy, které chcete spustit na pozadí. Představte si, že chcete nejdřív aktualizovat balíčky svého systému a pak vyčistit zbytečné soubory a chcete to udělat pomocí příkazu nohup:

nohup bash -c 'sudo apt-get update && sudo apt-get autoremove -y' &

V tomto příkladu, nohup umožňují oběma procesům aktualizace a čištění pokračovat v běhu na pozadí. Takže se vaše systémové úlohy údržby dokončí bez toho, abyste 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ě. Ale co když chcete výstup dostávat v jiné cestě? Tady je návod, jak na to:

nohup [command] > [/path/to/new/output.txt]

Nezapomeňte nahradit hodnoty v [] s příkazem a cestou k souboru dle vašeho výběru.

Kombinace nohup s jinými příkazy

nohup lze kombinovat s dalšími příkazy a pipes, aby se vytvořily výkonné řetězce příkazů. Podívejme se na příklad:

nohup find / -name "*.log" | xargs grep "ERROR" > error_logs.txt 2>&1 &

Zde, najít příkaz se používá k hledání souborů protokolu a grep se používá k vyhledání výrazu „ERROR". Kombinovaný výstup je přesměrován do error_logs.txt.

V této sekci jsme si ukázali nejčastější možnosti a způsoby použití příkazu nohup. Když si tyto pokyny osvojíte, budete moci efektivně spouštět procesy Linux na pozadí pomocí nohup.

Běžné chyby a řešení problémů

Příkaz nohup se obvykle používá bez problémů, ale během práce se můžete setkat s běžnými chybami. Porozumění těmto chybám a vědění, jak je řešit, vám ušetří čas a frustraci. Pojďme se podívat na nejčastější chyby a jak je překonat:

Přístup zamítnut

K tejto chybě dochází, když skript nebo příkaz, který se pokoušíte spustit, nemá oprávnění ke spuštění. Chyba vypadá takto: nohup: nelze spustit příkaz 'myscript.sh': Přístup odmítnut

Pokud chcete tento problém vyřešit, ujistěte se, že skript nebo příkaz má správná oprávnění. Právo spouštění můžete přidat pomocí chmod Tento STEJNÝ řetězec byl přeložen do arabštiny jako: ':' Takže víš, že JE přeložitelný, není to název značky. Přeložit do češtiny nyní.

chmod +x myscript.sh 
nohup ./myscript.sh &

Příkaz nenalezen

Tato chyba se objeví, 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: chyba při spuštění příkazu 'myscript.sh': Soubor nebo adresář nenalezen

Chcete-li vyřešit tuto chybu, ověřte, ž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 &

Ujistěte se také, že je příkaz nainstalován a dostupný v PATH.

Žádný výstup

Někdy si můžete všimnout, že se v terminálu nebo výstupním souboru nic nezobrazuje. Pokud příkaz sice produkuje výstup, ale nevidíte ho, výstup se může přesměrovat do jiné cesty nebo může být problém s oprávněními k souboru. Abyste tento problém vyřešili, musíte výstupní soubor zadat explicitně, aby se zajistilo správné přesměrování:

nohup myscript.sh > output.log 2>&1 &

Jako příklad - tento příkaz 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 obvykle jednoduchý. Možná jste zapomněli přidat & symbol na konci příkazu, aby se spustil na pozadí. Řešení je jednoduché: stačí se ujistit, že jste ho přidali, a máte vyhráno.

Proces se zasekal nebo nerespektuje

Proces spuštěný přes nohup se může zaseknout nebo přestat reagovat. Stane se tak, pokud proces čeká na vstup nebo když narazí na problémy s prostředky, které se snaží použít. Na tento problém existují dvě řešení:

  • Zkontrolovat požadované vstupy: Ujistěte se, že příkaz nevyžaduje žádný interaktivní vstup.
  • Problémy s prostředky: Ověřte, že příkaz má přístup k potřebným prostředkům (např. soubory, síť).

Přepsání nohup.out

Pokud spouštíte více procesů na pozadí pomocí příkazu nohup, můžete neúmyslně přepsat nohup.out souboru. Abyste se vyhnuli tomuto problému, můžete pro každý proces zadat specifickou cestu. Každý proces tak bude mít svůj vlastní výstupní soubor a výchozí cesta se nepřepíše.

Když se naučíte, jak řešit běžné chyby příkazu nohup, budete ho moct bez problémů používat.

Závěr

Příkaz nohup je skvělý nástroj pro každého uživatele Linux, který potřebuje spouštět procesy na pozadí. Zajistí, že vaše procesy budou běžet dál i po odhlášení. V tomto průvodci jsme si ukázali základní syntaxi, prozkoumali různé možnosti a diskutovali běžné chyby a tipy pro řešení problémů. Zvládnutí příkazu nohup vám umožní efektivně spravovat dlouhotrvající úlohy, což zvyšuje vaši produktivitu a dovednosti v oblasti správy systému.

Pokud jste Linux vývojář, který chce co nejvíce využít svůj Linux, zvažte upgrade na spolehlivý Linux VPS. Naše cloudová služba VPS nabízí podporu 24 hodin denně a záruku dostupnosti 99,95 %, takže vaše aplikace běží hladce vždy a pomoc získáte kdykoli během dne. S robustní infrastrukturou a spolehlivými prostředky je naše VPS navržena tak, aby splňovala požadavky Linux programátorů. Navíc si můžete nechat předinstalovat preferovanou distribuci Linux, což zpřesňuje nastavení rychle a jednoduše. Posuňte své Linux projekty na vyšší úroveň s VPS, která vám poskytuje potřebný výkon a flexibilitu.

Často kladené otázky

Jaký je rozdíl mezi nohup a &?

nohup zabraňuje ukončení procesu, když se uživatel odhlásí, zatímco & spustí proces na pozadí. Použití nohup zajišťuje, že proces pokračuje i po odhlášení, a kombinace s & mu umožňuje běžet na pozadí.

Proč se nohup používá?

nohup se používá k zajištění, že příkaz nebo skript pokračuje v běhu i poté, co se uživatel odhlásí nebo se terminál zavře. Je nezbytné pro dlouhotrvající procesy, které musí zůstat aktivní bez zásahu uživatele.

Co je to soubor nohup.out?

The nohup.out je výchozí výstupní soubor, do kterého nohup přesměrovává standardní výstup a chyby 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.

Sdílet

Další z blogu

Čtěte dál.

Obrázek článku o nejlepších self-hosted aplikacích, které lze provozovat s Cosmos Cloud, s panely aplikací kolem dashboardu Cosmos.
Servery a OS

Nejlepší self-hosted aplikace pro Cosmos Cloud: soubory, média, hesla, automatizace a další!

Maybe jste nastavili Cosmos Cloud a teď chcete vědět, které aplikace se k němu hodí, nebo jste se třeba ještě nerozhodli pro Cosmos a jen chcete zjistit, jak dobře zapadne do vašeho pracovního postupu

Nick StříbroNick Stříbro 16 minut čtení
Portainer vs Cosmos Cloud pro správu aplikací Docker: titulní obrázek s diagramem hybridního nastavení a bloky neon ops vs access.
Servery a OS

Portainer vs Cosmos Cloud: Co se lépe hodí pro správu aplikací Docker?

Pokud Docker už znáte a hledáte čistší způsob, jak provozovat rostoucí zásobník aplikací, tady je stručná odpověď na otázku Portainer vs Cosmos Cloud. Portainer je silnější volba pro přím

Nick StříbroNick Stříbro 14 minut čtení
Grafika srovnání Cosmos Cloud vs CasaOS vs Umbrel – tři cesty k self-hostingu v rámci jedné abstraktní cloudové sítě.
Servery a OS

Cosmos Cloud vs CasaOS vs Umbrel: Která self-hostovaná platforma sedí vašemu nastavení?

Stručně řečeno: CasaOS je stále nejjednodušší místo, kde začít, Umbrel působí nejupraveněji a nejpřehledněji a Cosmos Cloud dává větší smysl ve chvíli, kdy chcete mít větší kontrolu nad doménou

Nick StříbroNick Stříbro 11 minut čtení

Připraveni nasadit? Od 2,48 $/měsíc.

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